如何在python中查询字典中的值?

ZHI*_*ENG 3 python dictionary

我有一个列表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

提前致谢

Wil*_*sem 6

您可以简单地使用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希望性能提高,因为可以节省打包和拆包.