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