2016-10-24 2 views
0

ich versuche, eine Liste von Tupeln in ein Wörterbuch zu konvertieren, aber wenn ich es mit der dict() Funktion zu tun, ist die Reihenfolge der Elemente verändert:Konvertieren eine Liste von Tupeln zu Python-Wörterbuch, ohne den Auftrag zu verlieren

l = [('id', 2), ('osm_id', 3), ('sourceid', 4), ('notes', 5), ('ref', 6), ('rtenme', 7), ('ntlclass', 8), ('fclass', 9), ('numlanes', 10), ('srftpe', 11), ('srfcond', 12), ('isseasonal', 13), ('curntprac', 14), ('gnralspeed', 15), ('rdwidthm', 16), ('status', 17), ('bridge', 18), ('iso3', 19), ('country', 20), ('last_updat', 21)] 

dict_l = dict(l) 
print (dict_l) 

{'fclass': 9, 'status': 17, 'isseasonal': 13, 'bridge': 18, 'sourceid': 4, 'country': 20, 'notes': 5, 'rtenme': 7, 'iso3': 19, 'last_updat': 21, 'gnralspeed': 15, 'osm_id': 3, 'srfcond': 12, 'numlanes': 10, 'srftpe': 11, 'rdwidthm': 16, 'ref': 6, 'id': 2, 'ntlclass': 8, 'curntprac': 14} 

Was fehlt mir hier?

Ich habe auch versucht, durch die Liste von Tupeln Schleife und bauen die dict manuell als:

c = 0 
for key, value in display_order_list_sorted: 
    display_order_dict_sorted[display_order_list_sorted[c][0]] = display_order_list_sorted[c][1] 
    c = c + 1 

ich das gleiche Problem konfrontiert.

+7

Python-Wörterbücher sind ungeordnet. Verwenden Sie ein [OrderedDict] (https://docs.python.org/3/library/collections.html#collections.OrderedDict). – erip

+1

Hier finden Sie eine Erklärung: [Warum ist die Reihenfolge in Wörterbüchern und Mengen willkürlich?] (Http://stackoverflow.com/questions/15479928/why-is-the-order-in-dictionaries-and-sets-arbitrary) – roganjosh

+1

Sie werden erfreut sein zu erfahren, dass in Python 3.6 [Wörterbücher _ sind_ bestellt] (http://stackoverflow.com/questions/39980323/dictionaries-are-ordered-in-python-3-6). Dies ist derzeit ein Implementierungsdetail, auf das man sich nicht verlassen sollte, es könnte jedoch zu einem tatsächlichen Sprachmerkmal werden. –

Antwort

2

Python-Wörterbuch ist nicht geordnet. Sie müssen OrderedDict verwenden.

+3

Wenn Sie die gleiche Antwort wie der Kommentar geben, geben Sie vielleicht ein Beispiel? – MooingRawr

+0

Yeah, atm, dass ich die Antwort gepostet habe, enthielt der Kommentar nur einen Link, den ich vor dem Posten nicht geöffnet habe. Das Beispiel ist in der Antwort von @Ari Gold. – table

3
from collections import OrderedDict 
l = [('id', 2), ('osm_id', 3), ('sourceid', 4), ('notes', 5), ('ref', 6), ('rtenme', 7), ('ntlclass', 8), ('fclass', 9), ('numlanes', 10), ('srftpe', 11), ('srfcond', 12), ('isseasonal', 13), ('curntprac', 14), ('gnralspeed', 15), ('rdwidthm', 16), ('status', 17), ('bridge', 18), ('iso3', 19), ('country', 20), ('last_updat', 21)] 

dict_l = OrderedDict(l) 
print (dict_l) 
+0

Also ist diese Antwort irreführend: http://stackoverflow.com/questions/6522446/list-of-tuples-to-dictionary – user1919

+0

@ user1919, wie? –

+0

Ursache Ich mache das gleiche (Konvertierung einer Tupel nach Wertliste in ein Wörterbuch) und ich bekomme kein Wertwörterbuch, wie diese Antwort impliziert. – user1919

Verwandte Themen