Viele Möglichkeiten, dies zu verkürzen:
map(lambda score_str: int(score_str), i.keys())
Der Ausdruck lambda score_str: int(score_str)
wie int
geschrieben werden konnte, abzubilden keine Notwendigkeit, eine lambda
, wenn alles, was Sie die Funktion ruft tun.
Wenn Sie über das Wörterbuch iterieren möchten, rufen Sie nicht i.keys()
, verwenden Sie einfach i
.
Das gibt Ihnen:
list(map(int, i))
aber es leichter liest (wenn auch etwas länger), wenn Sie eine Liste Verständnis verwenden:
scores = scores + [int(score_str) for score_str in i]
Sie können auch Nest der for-Schleife in der Liste Verständnis , aber kürzer ist nicht immer besser, also würde ich davon abraten.
scores = [int(score_str) for i in data for score_str in i]
Gleiches gilt für den letzten Teil gilt:
sorted_scores = list(map(lambda score_int: str(score_int), reversed(sorted(scores))))
kann nur sein:
sorted_scores = [ str(score_int) for score_int in sorted(scores, reverse=True)]
Sie in die Gewohnheit, es doesn der Verwendung des reverse
Parameter beim Sortieren, erhalten sollte‘ Das ist hier wichtig, aber es gibt Situationen, in denen die umgekehrte Sortierung nicht die gleiche ist wie beim Sortieren und Rückwärtsfahren.
Auch Sie das Gießen unter Verwendung des key
Parameter auf den sort
vermeiden konnten:
scores = [score_str for i in data for score_str in i]
sorted_scores = sorted(scores, reverse=True, key=int)
Warum es kompakter sein muss? Wenn Sie ** Arbeitscode ** haben, von dem Sie glauben, dass er verbessert werden könnte (mehr als nur eine einzelne Funktion), siehe [codereview.se]. – jonrsharpe
Mit "def-Anweisung" meinen Sie auch * Funktion *? –
Ich verstehe nicht, was Sie wollen, aber Sie können Ihr Ziel einfach dadurch erreichen: return data.keys.sort() – Sagar