Python: finding keys with unique values in a dictionary?

前端 未结 9 2041
臣服心动
臣服心动 2021-02-19 01:28

I receive a dictionary as input, and want to return a list of keys for which the dictionary values are unique in the scope of that dictionary.

I will clarify with an exa

相关标签:
9条回答
  • 2021-02-19 01:48

    Here is a solution that only requires traversing the dict once:

    def unique_values(d):
        seen = {} # dict (value, key)
        result = set() # keys with unique values
        for k,v in d.iteritems():
            if v in seen:
                result.discard(seen[v])
            else:
                seen[v] = k
                result.add(k)
        return list(result)
    
    0 讨论(0)
  • 2021-02-19 01:49
    >>> b = []
    >>> import collections
    >>> bag = collections.defaultdict(lambda: 0)
    >>> for v in a.itervalues():
    ...     bag[v] += 1
    ...
    >>> b = [k for (k, v) in a.iteritems() if bag[v] == 1]
    >>> b.sort() # optional
    >>> print b
    ['dog', 'snake']
    >>>
    
    0 讨论(0)
  • 2021-02-19 01:54

    Note that this actually is a bruteforce:

    l = a.values()
    b = [x for x in a if l.count(a[x]) == 1]
    
    0 讨论(0)
提交回复
热议问题