Existe-t-il un moyen de regrouper plusieurs clés qui pointent vers la même valeur dans un dictionnaire?Existe-t-il un moyen de regrouper plusieurs clés qui pointent vers la même valeur dans un dictionnaire?
1
A
Répondre
3
from collections import defaultdict
newdict = defaultdict(list)
for k,v in originaldict.items():
newdict[v].append(k)
2
Pas exactement sûr de vouloir le résultat structuré, mais voici une supposition:
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}
-1: Ne fonctionne pas comme écrit - génère exception 'ValueError'. – martineau
OK, c'est mieux! – martineau