0

我有一本字典,其中的值是列表元素:

dict1={'A':[9,0,8],'B':[6,5,4],'C':[]}

现在我必须处理这个字典来检查字典中的所有值是否都是空列表;如果是,请收集钥匙。

有比简单地遍历条目更好的选择吗?

4

3 回答 3

4
if not any(dict1.values()):
    res = dict1.keys()
于 2013-05-31T00:45:15.427 回答
2

一旦你有了字典,你就不能避免为了过滤它而不得不遍历这些项目:

keys = [key for key, value in dict1.items() if not value]

if len(keys) != len(dict1):
    # Do something about the mis-match
于 2013-05-31T00:41:57.813 回答
1

您可以测试 dict 值的真实性:

di={'A':[9,0,8],'B':[6,5,4],'C':[], 'D':[0], 'E': []}

truthy= [k for k in di if di[k]]
falsy= [k for k in di if not di[k]]

print 'truthy:{}, falsy:{}'.format(truthy,falsy)

印刷:

truthy:['A', 'B', 'D'], falsy:['C', 'E']

您还可以使用过滤器:

truthy=filter(lambda k: di[k], di)
falsy=filter(lambda k: not di[k], di)
于 2013-05-31T01:00:43.197 回答