Python konvertieren der Werte aus dicts, die in einem Tupel
Habe ich eine Liste der Wörterbücher, die wie folgt aussieht:
[{'id':1,'name':'Foo'},{'id':2,'name':'Bar'}]
Ich würde gerne konvertieren Sie die Werte aus jeder dict-in eine Liste von Tupeln, wie diese:
[(1,'Foo'),(2,'Bar')]
Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
id
wird immer kommen, bevorname
, vor allem über die verschiedenen Versionen und Implementierungen. Zum Beispiel die Eingabe des oben genannten Beispiel, in IronPython (zB. trypython.org) derzeit gibt[('Foo', 1), ('Bar', 2)]
. Sie können nicht einmal sicher sein, dass zwei dicts mit den gleichen Tasten geben Ihrekeys()
in der gleichen Reihenfolge (Sie werden für einfache Fälle wie diese, aber das ist ein Implementierungsdetail Sie sind eigentlich nicht zu verlassen).Dictionaries preserve insertion order. Note that updating a key does not affect the order. Keys added after deletion are inserted at the end.
linkBeachten Sie, dass der Ansatz in SilentGhost Antwort keine Garantie für die Reihenfolge der einzelnen Tupel, da Wörterbücher und Ihre
values()
haben keine inhärente Reihenfolge. So dass Sie könnte genauso gut bekommen('Foo', 1)
als(1, 'Foo')
im Allgemeinen Fall.Wenn das nicht akzeptabel und Sie werden definitiv müssen die
id
erste, Sie haben zu tun, dass ausdrücklich:Diese konvertieren Wörterbuch Tupel immer in den vorgegebenen
order
d = {'x': 1 , 'y':2}
order = ['y','x']
tuple([d[field] for field in order])