如何从python中的字典中删除0

时间:2013-08-02 03:37:41

标签: python

我有一个名为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}

3 个答案:

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