我有一个名为result
的对象。 result.f
是表单中的字典(作为示例):
{('a','a'):9, ('a','b'):10, ('a','c'):0}
我想从字典result.f
中删除等于0的项目。我写了以下代码:
new_f=set()
for j in result.f.keys():
if result.f[j]!=0:
new_f.append(j:result.f[j])
但我有语法错误:
new_f.append(j:result.f[j])
^
SyntaxError: invalid syntax
如何在new_f
中编写新词典,以便在删除等于0的项目后new_f
等于result.f
?
更新
如果字典是:
{('a','a'):9, ('a','b'):10, ('a','c'):0}
我希望输出与前一个相同,但没有0项:
{('a','a'):9, ('a','b'):10}
答案 0 :(得分:3)
使用列表理解:
for key in [k for k in d if d[k] == 0]:
d.pop(key)
答案 1 :(得分:2)
怎么样:
new_f = dict((k,v) for (k,v) in result.f.iteritems() if v != 0)
或者更接近OP的形式:
new_f=dict()
for j in result.f.keys():
if result.f[j]!=0:
new_f[j] = result.f[j]
答案 2 :(得分:0)
试试这个
mydict = {('a','a'):9, ('a','b'):10, ('a','c'):0}
for i in filter(lambda x: mydict[x] == 0, mydict):
del mydict[i]
print mydict