2016-05-25 14 views
1

Cheers,Convert nur ein Element mit Wörterbuch Verständnis

Ich arbeite derzeit an einem Stück Code und und ich versuche, die besten zu finden, mehr pythonic und CPU kostengünstige Lösung für mein Problem.

ich tatsächlich eine Reihe von „Indexwert“ habe, die ich durch eine Datei zu lesen, ist ein Beispiel:

>>> list = ['index_1 200', 'index_2 500', 'index_3 50'] 
>>> 
>>> list 
['index_1 200', 'index_2 500', 'index_3 50'] 

Ich versuche, ein Wörterbuch Verständnis zu schaffen, in dem ich die Indexnamen als pflegen string, aber wandeln Sie den Wert in einen int um. Die Art, wie ich gefunden habe, dieses Ziel zu erreichen war:

>>> dict((line.split()[0], int(line.split()[1])) for line in list) 
{'index_2': 500, 'index_3': 50, 'index_1': 200} 

Aber der (line.split()[0], int(line.split()[1]) Teil sieht aus wie etwas, das in einer besseren Art und Weise getan werden könnte, denn das ist meine Liste Beispiel ist wirklich nur ein Beispiel, kann ich riesig finden Zeilen von Indizes später.

Danke für jede Hilfe.

Antwort

8

Sie können Spaltung vermeiden jede Saite zweimal, und Sie können die Verwendung eines Wörterbuchs Verständnis wie diese machen:

>>> mylist = ['index_1 200', 'index_2 500', 'index_3 50'] 
>>> mydict = {k:int(v) for (k,v) in (line.split() for line in mylist)} 
>>> mydict 
{'index_2': 500, 'index_3': 50, 'index_1': 200} 

bearbeiten

In Python 2.6 Sie können so ziemlich das Gleiche tun, aber ohne das Diktat Verständnis Syntax:

>>> mydict = dict((k,int(v)) for (k,v) in (line.split() for line in mylist)) 
+0

wirkt wie ein Charme auf Python 2.7 +. Gibt es eine Chance auf Python 2.6? – mvarge

+1

@mvarge Siehe meine Bearbeitung – khelwood

+1

das ist einfach schön. – mvarge

Verwandte Themen