2010-08-11 9 views
7

Ich habe also ein Tupel definiert: (Slot, GameID, Bitrate)Elegante Möglichkeit zum Erstellen eines Wörterbuchs von Paaren, aus einer Liste von Tupeln?

und erstellt eine Liste von ihnen myListOfTuples genannt. In dieser Liste könnten Tupel sein, die das gleiche gameid enthalten.

z. die Liste kann wie folgt aussehen:

[ 
    (1, "Solitaire", 1000), 
    (2, "Diner Dash", 22322), 
    (3, "Solitaire", 0), 
    (4, "Super Mario Kart", 854564), 
    ... and so on. 
] 

Aus dieser Liste ein Wörterbuch von Paaren erstellen müssen - (gameId, bitrate), wo die bitrate für diese gameId ist die erste, die ich auf für diese bestimmten gameId kam in myListOfTuples.

z. Aus dem obigen Beispiel - das Wörterbuch von Paaren würde nur ein Paar mit gameId "Solitaire" enthalten: ("Solitaire", 1000) weil 1000 die erste gefundene Bitrate ist.

NB. Ich kann eine Reihe von einzigartigen Spiele mit diesem erstellen:

uniqueGames = set((e[1] for e in myListOfTuples)) 

Antwort

10

Für python2.6

dict(x[1:] for x in reversed(myListOfTuples)) 

Wenn Sie python2.7 oder 3.1 können Sie katrielalex Antwort

4
{ gameId: bitrate for _, gameId, bitrate in reversed(myListOfTuples) }.items() 

(Dies ist eine Ansicht, nicht eine Reihe Es setlike Operationen, aber wenn Sie einen Satz benötigen, muss er in einem..)

Sind Sie sicher, dass Sie einen Satz wünschen, kein Wörterbuch von gameId: bitrate? Letzteres scheint mir eine natürlichere Datenstruktur für dieses Problem zu sein.

+0

Dank verwenden katrielalex - Ich bekomme einen Syntaxfehler kurz nach dem 'for'. Warum die "umgekehrte"? – BeeBand

+2

Das "Umgekehrte" ist, weil wiederholte Wörterbuchzuweisung zu demselben Schlüssel seinen Wert überschreibt; Wir wollen den * ersten * Wert in der Liste, damit wir rückwärts iterieren. Ich gehe davon aus, dass Sie Python 2.x verwenden, da Lexikon-Komprehensionen für Py3k neu sind. Sie können das gleiche mit einem Generator tun, obwohl es ein bisschen unordentlicher ist. Festsetzung. – katrielalex

+0

Ich sehe. Ja, ein Wörterbuch wäre tatsächlich nützlicher. – BeeBand

Verwandte Themen