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

时间:2013-09-14 22:36:19

标签: python dictionary

我需要选择某个值或更大值的字典元素。我知道如何使用列表 Return list of items in list greater than some value

执行此操作

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

[i for i in dict if dict.values() >= x]

3 个答案:

答案 0 :(得分:28)

.items()将返回(key, value)个对,您可以使用list comprehension使用dict() constructor重新构建已过滤的dict,这将接受@opatut answer一个可迭代的(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}

如果您不关心在早于2.7版的python上运行代码,请使用"dict comprehensions"查看{{3}}:

{k:v for (k,v) in dict.items() if v > something}

答案 1 :(得分:10)

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

{k:v for (k,v) in dict.items() if v > something}

在此处找到:Create a dictionary with list comprehension in Python。我通过谷歌搜索“python词典列表理解”,顶部帖子。

解释

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

答案 2 :(得分:1)

您希望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]