python字典:如何获取具有特定值的所有键

Var*_*lor 11 python dictionary

是否可以使字典中的所有键的值超过阈值?

dicitonary可能看起来像:

mydict = {(0,1,2):"16",(2,3,4):"19"}
Run Code Online (Sandbox Code Playgroud)

例如,阈值可以是17

Wil*_*sem 24

当然有可能.我们可以简单地写:

[k for k,v in mydict.items() if float(v) >= 17]
Run Code Online (Sandbox Code Playgroud)

或者在你使用的情况下,你 - 就像@NoticeMeSenpai所说 - 更好地使用:

[k for k,v in mydict.iteritems() if float(v) >= 17]
Run Code Online (Sandbox Code Playgroud)

这是列表理解.我们遍历mydict字典中的键值对.接下来,我们将值v转换为a float(v)并检查浮点数是否大于或等于17.如果是这种情况,我们将键添加k到列表中.

对于您的给定mydict,这会产生:

>>> [k for k,v in mydict.items() if float(v) >= 17]
[(2, 3, 4)]
Run Code Online (Sandbox Code Playgroud)

所以包含满足条件的单个键的列表:(2,3,4).

  • 另外值得注意的是,<2.7应该使用`dict.iteritems()`来实现资源和性能 (2认同)