通过词典列表搜索无法得到可靠的结果?

时间:2019-07-08 18:51:42

标签: python list dictionary

基本上,我有一个字典列表,通常每个字典有少于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的大小减小时,我就分别在第二次和第三次运行相同的代码。

这似乎是一个非常简单的问题,但我不明白为什么会这样。我做错什么了吗?

2 个答案:

答案 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}]