Selecting elements of a Python dictionary greater than a certain value

前端 未结 3 1466
自闭症患者
自闭症患者 2020-12-24 11:53

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

相关标签:
3条回答
  • 2020-12-24 12:49

    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.

    Explanation

    • { .... } 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
    0 讨论(0)
  • 2020-12-24 12:50

    .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}
    
    0 讨论(0)
  • 2020-12-24 12:55

    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]
    
    0 讨论(0)
提交回复
热议问题