de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 Antony
Antony
Question

Jak mogę posortować słownik według klucza?

Jaki byłby ładny sposób na przejście z {2:3, 1:89, 4:5, 3:0} do {1:89, 2:3, 3:0, 4:5}?
Sprawdziłem kilka postów, ale wszystkie one używają operatora "sorted", który zwraca tuple.

829 2012-01-25T10:54:29+00:00 3
 MERose
MERose
Edytowane pytanie 1. maja 2015 в 10:57
Programowanie
sorting
python
dictionary
Popular videos
Python - Dictionaries!
Python - Dictionaries!
1 rok temu
KRUCHA WĄTRÓBKA CIELĘCA NA BRUNATNO TRADYCYJNE Z CEBULKĄ
KRUCHA WĄTRÓBKA CIELĘCA NA BRUNATNO TRADYCYJNE Z CEBULKĄ
3 miesiące temu
15. Kurs Python 3 - słownik (kolekcja) - dictionary
15. Kurs Python 3 - słownik (kolekcja) - dictionary
2 lata temu
How to sort a dictionary by keys or by values | Python Tutorial
How to sort a dictionary by keys or by values | Python Tutorial
2 lata temu
How To Sort A Dictionary In Python By Key
How To Sort A Dictionary In Python By Key
10 miesięcy temu
11 ustawień w iPhonie, które POWINIENEŚ OD RAZU ZMIENIĆ 📲
11 ustawień w iPhonie, które POWINIENEŚ OD RAZU ZMIENIĆ 📲
1 rok temu
Zliczanie wystąpień wartości za pomocą słowników [Python] odc. 21 z serii podstaw Pythona
Zliczanie wystąpień wartości za pomocą słowników [Python] odc. 21 z serii podstaw Pythona
2 lata temu
Ponad 20 ukrytych funkcji, które od początku miał twój iPhone
Ponad 20 ukrytych funkcji, które od początku miał twój iPhone
1 rok temu
iOS 15 📲 NAJLEPSZE TRIKI I UKRYTE FUNKCJE
iOS 15 📲 NAJLEPSZE TRIKI I UKRYTE FUNKCJE
7 miesięcy temu
Kiblowe tematy - Dawne sposoby na załatwienie potrzeb fizjologicznych? Wychodek / Sławojka / Wygódka
Kiblowe tematy - Dawne sposoby na załatwienie potrzeb fizjologicznych? Wychodek / Sławojka / Wygódka
3 miesiące temu
EXCEL - Sortowanie
EXCEL - Sortowanie
10 lat temu
Sortowanie tekstu według alfabetu oraz według liczb
Sortowanie tekstu według alfabetu oraz według liczb
4 lata temu
LPES #03.3: Python – słowniki i klasy
LPES #03.3: Python – słowniki i klasy
1 rok temu
Jak w najprostszy sposób rozwiązać klasyczną kostkę Rubika
Jak w najprostszy sposób rozwiązać klasyczną kostkę Rubika
2 lata temu
Lista słowników na przykładzie bazy książek [Python] odc. 28 z serii podstaw Pythona
Lista słowników na przykładzie bazy książek [Python] odc. 28 z serii podstaw Pythona
2 lata temu
REWOLUCJA w WĘDKARSTWIE ?! PROJEKT "NASZE ŁOWISKA"
REWOLUCJA w WĘDKARSTWIE ?! PROJEKT "NASZE ŁOWISKA"
3 miesiące temu
Spławikowa Wędka Podlodowa | Budowa Zestawu
Spławikowa Wędka Podlodowa | Budowa Zestawu
1 rok temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
 NPE
NPE
25. stycznia 2012 в 10:56
2012-01-25T10:56:30+00:00
Więcej
Źródło
Edytuj
#15268421

Standardowe słowniki Pythona są nieuporządkowane. Nawet jeśli posortowałbyś pary (klucz,wartość), nie byłbyś w stanie przechowywać ich w dict w sposób, który zachowałby kolejność.

Najprostszym sposobem jest użycie OrderedDict, który zapamiętuje kolejność, w jakiej elementy zostały wstawione:

In [1]: import collections

In [2]: d = {2:3, 1:89, 4:5, 3:0}

In [3]: od = collections.OrderedDict(sorted(d.items()))

In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])

Nieważne, w jaki sposób od jest wypisywane; będzie działać zgodnie z oczekiwaniami:

In [11]: od[1]
Out[11]: 89

In [12]: od[3]
Out[12]: 0

In [13]: for k, v in od.iteritems(): print k, v
   ....: 
1 89
2 3
3 0
4 5

Python 3

Dla użytkowników Pythona 3, należy użyć .items() zamiast .iteritems():

In [13]: for k, v in od.items(): print(k, v)
   ....: 
1 89
2 3
3 0
4 5
 kame
kame
Edytowana odpowiedź 12. marca 2016 в 11:38
868
0
 James
James
21. grudnia 2012 в 1:01
2012-12-21T13:01:36+00:00
Więcej
Źródło
Edytuj
#15268423

Słowniki same w sobie nie mają uporządkowanych elementów jako takich, gdybyś chciał je wydrukować itp. w jakimś porządku, oto kilka przykładów:

W Pythonie 2.4 i wyżej:

mydict = {'carl':40,
          'alan':2,
          'bob':1,
          'danny':3}

for key in sorted(mydict):
    print "%s: %s" % (key, mydict[key])

daje:

alan: 2
bob: 1
carl: 40
danny: 3

(Python poniżej 2.4:).

keylist = mydict.keys()
keylist.sort()
for key in keylist:
    print "%s: %s" % (key, mydict[key])

Źródło: http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/

Nils  von Barth
Nils von Barth
Edytowana odpowiedź 15. kwietnia 2014 в 2:48
395
0
 Brian
Brian
25. stycznia 2012 в 12:16
2012-01-25T12:16:27+00:00
Więcej
Źródło
Edytuj
#15268422

Jak już inni wspomnieli, słowniki są z natury nieuporządkowane. Jednakże, jeśli problemem jest tylko wyświetlanie słowników w uporządkowany sposób, możesz nadpisać metodę __str__ w podklasie słownika i użyć tej klasy słownika zamiast wbudowanego dict. Na przykład.

class SortedDisplayDict(dict):
   def __str__(self):
       return "{" + ", ".join("%r: %r" % (key, self[key]) for key in sorted(self)) + "}"

>>> d = SortedDisplayDict({2:3, 1:89, 4:5, 3:0})
>>> d
{1: 89, 2: 3, 3: 0, 4: 5}

Uwaga, to nie zmienia nic o tym, jak klucze są przechowywane, w jakiej kolejności wrócą, gdy będziesz nad nimi iterować itp, tylko jak są wyświetlane za pomocą print lub na konsoli pythona.

24
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
365
Zarejestrowany 1 dzień temu
2
True Image
Zarejestrowany 1 dzień temu
3
archana agarwal
Zarejestrowany 3 dni temu
4
Maxim Zhilyaev
Zarejestrowany 6 dni temu
5
adambotsfford adambotsfford
Zarejestrowany 1 tydzień temu
DA
DE
EL
ES
FI
FR
ID
IT
JA
KO
LT
LV
NL
PL
PT
RU
SK
SL
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem