Jeśli mam słownik taki jak:
{ 'a': 1, 'b': 2, 'c': 3 }
Jak mogę to przekonwertować na to?
[ ('a', 1), ('b', 2), ('c', 3) ]
Jak mogę na to przekonwertować?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
python
list
compatibility
iterable-unpacking
mikrofon
źródło
źródło
[tuple(reversed(x)) for x in d.items()]
x
jest jużtuple
w kodzie (jest to charakteritems
iterowalny ztuple
s), byłoby łatwiej / szybciej to zrobić[x[::-1] for x in d.items()]
; wycinek odwracający bezpośrednio konstruuje odwrotnośćtuple
o odpowiedniej wielkości, zamiasttuple
iteracyjnego wypełniania przez konstruktora (z ogólną alokacją i zmianą rozmiaru na końcu) atuple
zreversed
iteratora.k, v
w takich przypadkach nie zawsze potrzeba wzorca.compatibility
tag z powodu różnic py2.x // py3.xOdpowiedzi:
Nie jest w pożądanej kolejności, ale dyktanda i tak nie mają żadnej określonej kolejności. 1 Sortuj lub organizuj w razie potrzeby.
Zobacz: items () , iteritems ()
W Pythonie 3.x nie używałbyś
iteritems
(który już nie istnieje), ale zamiast tego używałbyśitems
, który teraz zwraca „widok” do elementów słownika. Zobacz dokument Co nowego w Pythonie 3.0 i nową dokumentację dotyczącą widoków .1: Zachowanie kolejności wstawiania dla nagrań zostało dodane w Pythonie 3.7
źródło
ponieważ nikt inny tego nie zrobił, dodam wersje py3k:
źródło
Możesz użyć wyrażeń listowych.
dostanie cię
[ ('a', 1), ('b', 2), ('c', 3) ]
idrugi przykład.
Przeczytaj więcej o opisach list, jeśli chcesz, to bardzo interesujące, co możesz z nimi zrobić.
źródło
Utwórz listę nazwanych świątyń
Korzystanie z namedtuple często może być bardzo przydatne . Na przykład masz słownik „nazwa” jako klucze i „wynik” jako wartości takie jak:
Możesz wymienić elementy jako krotki, posortowane według własnego uznania, a także uzyskać nazwę i wynik, powiedzmy, gracz z najwyższym wynikiem (indeks = 0) bardzo pythonicznie:
Jak to zrobić:
lista w losowej kolejności lub w porządku kolekcji.OrDERDict :
w kolejności, posortowane według wartości („wynik”):
posortowane z najniższą oceną:
posortowane najpierw z najwyższym wynikiem:
źródło
Co chcesz, to
dict
„sitems()
iiteritems()
metody.items
zwraca listę krotek (klucz, wartość). Ponieważ krotki są niezmienne, nie można ich odwrócić. Dlatego musisz iterować elementy i tworzyć nowe krotki, aby uzyskać odwrócone krotki (wartość, klucz). W przypadku iteracjiiteritems
preferowane jest użycie generatora do generowania krotek (klucz, wartość) zamiast utrzymywania całej listy w pamięci.źródło
i
źródło
Są to przełomowe zmiany w porównaniu z Python 3.x i Python 2.x
Do użytku w Python3.x.
Do użytku w Pythonie 2.7
źródło
źródło
Przez
keys()
ivalues()
metody słownika izip
.zip
zwróci listę krotek, która działa jak uporządkowany słownik.Próbny:
źródło
collections.OrderedDict()
Działa to dla mnie jako alternatywa dla tej, która działa lepiej z wieloma wersjami lib Python HTTP Requests. Mimo że nie podoba mi sięzip
nazwa funkcji jako nieco niejasna / przeciążona.zip
-ifikacja nie jest „głębokim” rzutem, tzn. Jeśli są zagnieżdżone dzieci, nie będzie to miało wpływu. Być może będziesz musiał rzucić własną rekurencję.źródło
Byłoby to prostsze
Drugi nie jest wcale prostszy, ale tak.
źródło