我有一个列表Python
,它是一个包含字典的字典.
{'METTS MARK': {'salary': 365788, 'po': 1}, 'HARRY POTTER':{'salary': 3233233, 'po': 0}
如何计算记录数'po' = 1
?
我试过这个:
sum = 0 for key, values in DIC: if values[po] == 1: sum = sum + 1
但它返回: too many values to unpack
提前致谢
您可以简单地使用sum
和总结条件:
total = sum(values.get('po') == 1 for values in DIC.values())
这相当于(如@VPfB所说):
total = sum (1 for item in DIC.values() if item.get('po') == 1)
但后者的效率稍差.
您也应该使用'po'
而不是po
因为它是一个字符串,并且您最好使用,.get('po')
因为这可以保证如果'po'
不是每个字典的一部分它将起作用.
我想你忘了.items()
在你的for
循环中使用.通过迭代字典,您迭代键,在这种情况下,您不能将键解包为具有两个元素的元组.
尽管如此,使用生成器,这将是更高效的内存(可能更快),它是干净的代码.此外,通过直接迭代.values
而不是.items
希望性能提高,因为可以节省打包和拆包.