2011-07-07 11 views
9

Co wymyśliłem to:Czy istnieje bardziej elegancki sposób rozpakowywania kluczy i wartości słownika na dwie listy, bez utraty spójności?

keys, values = zip(*[(key, value) for (key, value) in my_dict.iteritems()]) 

Ale nie jestem zadowolony. Co mówią pythonistas?

+6

Nie nazywaj słownika 'dict', to cienie z' dict() 'wbudowanej. –

+0

@Daniel, masz rację. Będę edytować pytanie, dzięki! – Aufwind

+3

BTW zauważ, że twoje zrozumienie listy powinno wywoływać dzwonki alarmowe, ponieważ nic nie robi - nie ma klauzuli "if" do filtrowania i żadnej z mapowanych funkcji. – katrielalex

Odpowiedz

17

A co z używaniem my_dict.keys() i my_dict.values()?

keys, values = my_dict.keys(), my_dict.values() 
+1

Masz na myśli: 'keys, values ​​= dict.keys(), dict.values ​​()'? – Aufwind

+0

dokładnie to, co miałem na myśli – Constantinius

+11

Dzieje się tak, ponieważ jedną z umów z 'dyktem' jest to, że kolejność klawiszy i wartości w dyktacie będzie odpowiadać tak długo, jak długo rozmiar dyktatury nie ulegnie zmianie. –

Powiązane problemy