2010-12-22 3 views
2

In Python 2.7, bin ich verwendete Schlüssel/Wert-Paare aus einem Array zu sammeln und als Hash zurück:Sammeln Schlüssel/Wert-Paare in Python 2.6

return { u.id : u.name for u in users } 

Aber es stellt sich heraus, dass es nicht funktioniert in Python 2.6:

return { u.id : u.name for u in users } 
          ^
SyntaxError: invalid syntax 

Wie kann ich vermeiden, etwas wie das zu tun?

values = {} 

for u in users: 
    values[u.id] = u.name 

return values 

Gibt es einen besseren Weg?

Antwort

10

nur einen Generator Ausdruck übergeben, dass dies schafft das gleiche Wörterbuch als Wörterbuch Verständnis in späteren Versionen dict

return dict((u.id, u.name) for u in users) 

für eine Sequenz von Tupeln an den Konstruktor konstruiert.

+2

Sie schlagen mich um 10 Sekunden zu einer Zeichen-für-Zeichen identischen Antwort. :) – EMP

+1

@Evgeny Das ist der Nachteil einer Sprache mit einem richtigen Weg, es zu tun;) – aaronasterling

+1

eigentlich würde ich sagen, das ist ein netter Vorteil. Der Fragesteller sollte jetzt ziemlich sicher sein, wie er es richtig machen soll! :) – EMP

1
return dict((u.id, u.name) for u in users) 
1

Der dict Konstruktor nimmt ein iterable von Paaren.

return dict((u.id, u.name) for u in users)