基本上,我有一个字典列表,通常每个字典有少于20个key:value对,并且列表中大约有70,000个字典。列表的大小约为360M字节。基本上,我想查找包含特定关键字的字典,将它们设为新列表,然后将其从旧列表中删除。这是我的代码:
new_list = []
for item in old_list:
if 'keyword' in item:
new_list.append(item)
old_list.remove(item)
发生的是,在第一次运行后,我仍然可以在旧列表中找到包含“关键字”的字典。每当new_list的大小增加和old_list的大小减小时,我就分别在第二次和第三次运行相同的代码。
这似乎是一个非常简单的问题,但我不明白为什么会这样。我做错什么了吗?
答案 0 :(得分:1)
new_list = [item for item in old_list if 'keyword' in item]
old_list = [item for item in old_list if 'keyword' not in item]
答案 1 :(得分:0)
见下文
lst = [{'k1':12},{'k3':77},{'k1':77}]
new_list = []
to_delete = []
for idx,entry in enumerate(lst):
if 'k1' in entry:
new_list.append(entry)
to_delete.append(idx)
to_delete = sorted(to_delete,reverse=True)
for idx in to_delete:
lst.pop(idx)
print(lst)
print(new_list)
输出
[{'k3': 77}]
[{'k1': 12}, {'k1': 77}]