从字典中删除条目(Python)

delete an entry from a dictionary (Python)

好的,所以我必须去掉所有的负值项。我不明白我的代码为什么不起作用。

1
2
3
4
5
6
7
8
9
def main():
dic = {'aa': 20, 'bb': -10, 'cc': -12}
for i in dic:
    if dic[i]<0:
        del dic[i]

print(dic)

main()


你可以通过使用听写理解来实现这一点。

1
dic = {k: v for (k, v) in dic.items() if v >= 0}


这应该在python 2.x中有效-用

1
2
3
 for i in dic.keys():
   if dic[i]<0:
    del dic[i]

这在python 3.x中不起作用的原因是keys返回一个迭代器而不是一个列表--我在https://stackoverflow.com/a/11941855/2314737中找到了一个解释

非常细微的差别——我不知道。

所以,在python 3.x中,您需要使用

1
for i in list(dic):


1
2
3
4
5
6
delete_list = []
for i in dic:
    if dic[i] < 0:
        delete_list.append(i)
for each in delete_list:
    del dic[each]