我需要选择某个值或更大值的字典的元素。我知道如何使用列表执行此操作,返回列表中的项目列表大于某个值。
但我不确定如何将其翻译成对字典有用的东西。我设法获得(我认为)与大于或等于数字的值相对应的标签,但使用以下仅给出标签:
[i for i in dict if dict.values() >= x]
我需要选择某个值或更大值的字典的元素。我知道如何使用列表执行此操作,返回列表中的项目列表大于某个值。
但我不确定如何将其翻译成对字典有用的东西。我设法获得(我认为)与大于或等于数字的值相对应的标签,但使用以下仅给出标签:
[i for i in dict if dict.values() >= x]
.items()
将返回(key, value)
对,您可以使用输入到构造函数的列表推导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}
如果您不关心在 2.7 版之前的 python 上运行您的代码,请参阅@opatut answer using "dict comprehensions":
{k:v for (k,v) in dict.items() if v > something}
虽然 nmaier 的解决方案是我要走的路,但请注意,自从 python 2.7+ 以来,已经有了“ dict comprehension ”语法:
{k:v for (k,v) in dict.items() if v > something}
在这里找到:在 Python 中创建具有列表理解的字典。我通过谷歌搜索“python 字典列表理解”,顶帖找到了这个。
{ .... }
包括听写理解k:v
要添加到字典中的元素for (k,v) in dict.items()
这会遍历字典的所有元组(键值对)if v > something
必须适用于要包含的每个值的条件你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]