选择大于某个值的Python字典元素

Jes*_*e O 25 python dictionary

我需要选择某个值或更大值的字典元素.我知道如何使用列表,列表中的项目返回列表大于某个值.

但我不知道如何将其翻译成字典的功能.我设法得到对应(我认为)大于或等于数字的值的标签,但使用以下仅给出标签:

[i for i in dict if dict.values() >= x]
Run Code Online (Sandbox Code Playgroud)

nma*_*ier 31

.items()将返回使用列表推导(key, value)重构过滤的对,这些列表推导被提供给构造函数,它将接受一个可迭代的元组.我们的列表理解:dictdict()(key, value)

>>> d = dict(a=1, b=10, c=30, d=2)
>>> d
{'a': 1, 'c': 30, 'b': 10, 'd': 2}
>>> d = dict((k, v) for k, v in d.items() if v >= 10)
>>> d
{'c': 30, 'b': 10}
Run Code Online (Sandbox Code Playgroud)

如果您不关心在早于2.7版的python上运行代码,请参阅使用"dict comprehensions"的@opatut answer:

{k:v for (k,v) in dict.items() if v > something}
Run Code Online (Sandbox Code Playgroud)

  • 这很棒!你能解释一下它的语法是如何工作的吗(比如我五岁)? (2认同)

opa*_*tut 13

虽然nmaier的解决方案应该是我的方法,但请注意,因为python 2.7+有一个" dict comprehension "语法:

{k:v for (k,v) in dict.items() if v > something}
Run Code Online (Sandbox Code Playgroud)

在这里找到:在Python中创建一个包含列表推导的字典.我通过谷歌搜索"python词典列表理解",顶部帖子找到了这个.

说明

  • { .... } 包括词典理解
  • k:v 要添加到字典中的元素
  • for (k,v) in dict.items() 这会迭代dict的所有元组(键 - 值对)
  • if v > something 必须适用于要包含的每个值的条件


Sha*_*ank 7

你想dict[i]没有dict.values()dict.values()将返回字典中的整个值列表。

dict = {2:5, 6:2}
x = 4
print [dict[i] for i in dict if dict[i] >= x] # prints [5]
Run Code Online (Sandbox Code Playgroud)