我需要从一个字典中选择某个值或更大的元素。我知道如何在列表中实现这一点,Return list of items in list greater than some value。
但我不确定如何将其转化为字典可用的函数。我设法获得与数字大于或等于某个值相对应的标签(我想是这样),但是使用以下代码只会输出这些标签:
[i for i in dict if dict.values() >= x]
我需要从一个字典中选择某个值或更大的元素。我知道如何在列表中实现这一点,Return list of items in list greater than some value。
但我不确定如何将其转化为字典可用的函数。我设法获得与数字大于或等于某个值相对应的标签(我想是这样),但是使用以下代码只会输出这些标签:
[i for i in dict if dict.values() >= x]
.items()
会返回一组(key, value)
对,你可以使用它们来重构一个过滤后的dict
。使用列表推导式生成此dict
所需的可迭代对象,并将其传递给dict()
构造函数,该函数接受一个(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}
如果您不关心在 Python 2.7 版本之前运行代码,可以查看 @opatut答案,使用"字典推导式":
{k:v for (k,v) in dict.items() if v > something}
尽管nmaier的解决方案是我会采用的方法,但请注意自Python2.7+以来就有了"字典推导"语法:
{k:v for (k,v) in dict.items() if v > something}
在这里找到:用Python中的列表推导式创建字典。我通过谷歌搜索“python dictionary list comprehension”找到了这个顶部帖子。
{ .... }
包含字典推导式k:v
表示要添加到字典中的元素for (k,v) in dict.items()
这会遍历字典的所有元组(键-值对)if v > something
这是必须应用于每个要包括的值的条件dict.iteritems()
会稍微好一些。 - fearphagedict[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]