2 Stimmen

Python-Liste von Tupeln: Organisation nach eindeutigen Elementen in einem Wörterbuch

Ich habe eine Liste von Tupeln, sagen wir:

list_of_tuples = [('a', 1),('b',2),('c',1),('a',2),('d',3)]

Ich muss entsprechende Werte für jedes (eindeutige) zweite Element in einem Tupel erhalten. Zum Beispiel als Wörterbuch. Ausgabe:

dict = {1:['a','c'],2:['b','a'],3:['d']}

Was ist die pythonischste Vorgehensweise? Hilfe ist sehr willkommen!

4voto

Tim Pietzcker Punkte 311448

Ich würde mich wahrscheinlich für eine defaultdict wie jamylak, aber wenn Sie ein "richtiges" Wörterbuch wollen, können Sie setdefault() :

>>> list_of_tuples = [('a', 1),('b',2),('c',1),('a',2),('d',3)]
>>> d = {}
>>> for item in list_of_tuples:
...     d.setdefault(item[1],[]).append(item[0])
...
>>> d
{1: ['a', 'c'], 2: ['b', 'a'], 3: ['d']}

3voto

jamylak Punkte 119693
>>> from collections import defaultdict
>>> list_of_tuples = [('a', 1),('b',2),('c',1),('a',2),('d',3)]
>>> d = defaultdict(list)
>>> for c,num in list_of_tuples:
        d[num].append(c)

>>> d
defaultdict(<type 'list'>, {1: ['a', 'c'], 2: ['b', 'a'], 3: ['d']})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X