dictionary - sorted key funktion

Gast #5778955
Lesenswert?
• ▲
▼
Hallo,

es geht um ein dictionary in Python3, welches nach seinen Values 
sortiert werden soll und auch wird.
1
srtd_dct = [(k, read_dct[k]) for k in sorted(read_dct, key=read_dct.get, reverse=True)]

Macht auch was es soll, nur habe ich ein Verständnisproblem mit dem 
zweiten Parameter der sorted Funktion. Lt. Manual können hier sogenannte 
key Funktionen eingesetzt werden, aber das ist nicht verständlich 
dokumentiert finde ich.

Auf das read_dct wird hier eine Methode/Klasse get angewendet. Weiß 
jemand woher dieses get kommt und was es genau machen soll?

Ist das vielleicht das get(section, option, *, raw=False, vars=None[, 
fallback]) aus der Klasse configparser??
#5778966
Lesenswert?
• ▲
▼
das dict hat doch auch eine get-methode. Die wird übergeben.
Ist mir nicht ganz klar, was da passiert, oder warum man dieses 
key-argument verwenden soll. Es ist dafür da, um aus einem 
iterationsobject eine Sortiergröße zu berechnen. Das erscheint mir 
dict.get nicht wirklich zu machen. Eher müsste sowas wie
1
lambda x: x[0]
 funktionieren, das aus dem key, value pair den key rausholt.


ich würde schreiben:
1
srtd_dct = [(k, read_dct[k]) for k in sorted(read_dct.keys())]


siehe auch hier und hier für weitere Vorschläge:
https://stackoverflow.com/questions/1679384/converting-python-dictionary-to-list
https://stackoverflow.com/questions/674519/how-can-i-convert-a-python-dictionary-to-a-list-of-tuples


achja und es gibt auch ordered dictionary objekte.
Gast #5778989
Lesenswert?
• ▲
▼
A.S. schrieb:

>ich würde schreiben:
>srtd_dct = [(k, read_dct[k]) for k in sorted(read_dct.keys())]

Das sortiert keine Values, jedefalls nicht bei mir.

Danke auch für Deine anderen Vorschläge. Nochmal, die Sache funktioniert 
bei mir mit der gezeigten dict comprehension. Ich weiß halt nur nicht 
wie genau der zweite Parameter der sorted Funktion arbeitet. Das würde 
ich gerne wissen.

In einem Buch habe ich auch so etwas als zweiten Parameter gesehen
sorted(.., key=len,..). Verstehe ich zwar, nur wo kommt das len genau 
her??

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.