-2

我有一个名为result. result.f是形式的字典(例如):

{('a','a'):9, ('a','b'):10, ('a','c'):0}

我想从字典中删除等于 0 的项目result.f。我写了以下代码:

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

在删除等于 0 的项目后,如何编写新的字典new_f以便new_f等于?result.f

更新: 如果字典是: {('a','a'):9, ('a','b'):10, ('a','c'):0} 我希望输出与前一个相同但没有 0 项: {('a','a'):9, ('a','b'):10}

4

3 回答 3

3

使用列表推导:

for key in [k for k in d if d[k] == 0]:
    d.pop(key)
于 2013-08-02T04:21:57.480 回答
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]
于 2013-08-02T03:47:24.583 回答
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
于 2013-08-02T05:20:39.357 回答