liste de dictionnaire de conversion avec plusieurs valeurs pour la clé?

J'ai une liste Python qui détient les paires de clé/valeur:

l=[ [1, 'A'], [1, 'B'], [2, 'C'] ]

Je veux convertir la liste dans un dictionnaire, où plusieurs valeurs par clé doit être regroupé dans un n-uplet:

{ 1:('A', 'B'), 2:('C',) }

La solution itérative est trivial:

l=[ [1, 'A'], [1, 'B'], [2, 'C'] ]
d={}
for pair in l:
    if d.has_key(pair[0]):
        d[pair[0]]=d[pair[0]]+tuple(pair[1])
    else:
        d[pair[0]]=tuple(pair[1])

print d

{1: ('A', 'B'), 2: ('C',)}

Est-il plus élégant, Pythonic solution pour cette tâche?

  • s/multilpe/plusieurs
  • has_key est sur son chemin vers la poubelle de l'Python histoire - si vous devez tester l'existence d'une clé dans un dict, veuillez utiliser la nouvelle syntaxe if key in dict:. Mais la "Une" réponse à votre question est @eumiro de defaultdict approche.
  • Merci. L'ajout d'un /g le rendre plus générique 🙂
  • has_key() a été supprimé dans python 3 lien Supprimé. dict.has_key() – utiliser l'opérateur à la place.
InformationsquelleAutor Adam Matan | 2011-03-21