Python 2.7 Counting number of dictionary items with given value

后端 未结 2 1072
南方客
南方客 2020-12-05 18:23

first question here, so i will get right to it:

using python 2.7

I have a dictionary of items, the keys are an x,y coordinate represented as a tuple: (x,y) a

相关标签:
2条回答
  • 2020-12-05 18:34

    If you want a data structure that you can quickly access to check the counts, you could try using a Counter (as @mgilson points out, this relies on the values themselves being hashable):

    >>> from collections import Counter
    >>> d = {(1, 2): 2, (3, 1): 2, (4, 4): 1, (5, 6): 4}
    >>> Counter(d.values())
    Counter({2: 2, 1: 1, 4: 1})
    

    You could then plug in a value and get the number of times it appeared:

    >>> c = Counter(d.values())
    >>> c[2]
    2
    >>> c[4]
    1
    
    0 讨论(0)
  • 2020-12-05 18:44

    This first part is mostly for fun -- I probably wouldn't use it in my code.

    sum(d.values())
    

    will get the number of True values. (Of course, you can get the number of False values by len(d) - sum(d.values())).


    Slightly more generally, you can do something like:

    sum(1 for x in d.values() if some_condition(x))
    

    In this case, if x works just fine in place of if some_condition(x) and is what most people would use in real-world code)

    OF THE THREE SOLUTIONS I HAVE POSTED HERE, THE ABOVE IS THE MOST IDIOMATIC AND IS THE ONE I WOULD RECOMMEND


    Finally, I suppose this could be written a little more cleverly:

    sum( x == chosen_value for x in d.values() )
    

    This is in the same vein as my first (fun) solution as it relies on the fact that True + True == 2. Clever isn't always better. I think most people would consider this version to be a little more obscure than the one above (and therefore worse).

    0 讨论(0)
提交回复
热议问题