I need to select elements of a dictionary of a certain value or greater. I am aware of how to do this with lists, Return list of items in list greater than some value .
But I am not sure how to translate that into something functional for a dictionary. I managed to get the tags that correspond (I think) to values greater than or equal to a number, but using the following gives only the tags:
[i for i in dict if dict.values() >= x]
.items()
will return (key, value)
pairs that you can use to reconstruct a filtered dict
using a list comprehension that is feed into the dict()
constructor , that will accept an iterable of (key, value)
tuples aka. our list comprehension:
>>> 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}
If you don't care about running your code on python older than version 2.7, see @opatut answer using "dict comprehensions" :
{k:v for (k,v) in dict.items() if v > something}
While nmaier's solution would have been my way to go, notice that since python 2.7+ there has been a " dict comprehension " syntax:
{k:v for (k,v) in dict.items() if v > something}
Found here: Create a dictionary with list comprehension in Python . I found this by googling "python dictionary list comprehension", top post.
{ .... }
includes the dict comprehension k:v
what elements to add to the dict for (k,v) in dict.items()
this iterates over all tuples (key-value-pairs) of the dict if v > something
a condition that has to apply on every value that is to be included You want dict[i]
not dict.values()
. dict.values()
will return the whole list of values that are in the dictionary.
dict = {2:5, 6:2}
x = 4
print [dict[i] for i in dict if dict[i] >= x] # prints [5]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.