Есть ли способ сгруппировать несколько ключей, которые указывают на одно и то же значение в словаре? - PullRequest
1 голос
/ 05 ноября 2010

Есть ли способ сгруппировать несколько ключей, которые указывают на одно и то же значение в словаре?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010
from collections import defaultdict

newdict = defaultdict(list)
for k,v in originaldict.items():
    newdict[v].append(k)
2 голосов
/ 05 ноября 2010

Не совсем уверен, что вы хотите структурировать результат, но вот одно предположение:

from collections import defaultdict

mydict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 4, 'f': 2, 'g': 4}

tempdict = defaultdict(list)
for k,v in mydict.iteritems():
    tempdict[v].append(k)

groupedkeysdict = {}
for k,v in tempdict.iteritems():
    groupedkeysdict[tuple(v) if len(v)>1 else v[0]] = k

print groupedkeysdict
# {'a': 1, 'c': 3, ('e', 'g'): 4, ('b', 'd', 'f'): 2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...