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中不起作用的原因是
非常细微的差别——我不知道。
所以,在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] |