Mit Python ist max zurück zu kehren zwei gleich große Werte
Ich bin mit Python max Funktion zu finden, die größte ganze Zahl, die im Wörterbuch genannt count
, und die entsprechende Taste (nicht ganz sicher, ob ich sage, es richtig; mein code wahrscheinlich erklärt sich besser, als ich es bin, erklärt Sie). Das Wörterbuch count
ist entlang der Linien von {'a': 100, 'b': 210}
, und so weiter.
number = count[max(count.items(), key=operator.itemgetter(1))[0]]
highest = max(count, key=count.get)
Was würde ich tun, wenn gab es gleich zwei größten Werte? Wenn ich {'a': 120, 'b': 120, 'c': 100}
würde, würde dies nur die erste von a
und b
werden, nicht beide.
Was Sie tun, scheint zu Komplex. Fox Beispiel:
Ich kann nicht widerstehen, one-liners für diese Art von Fragen
number = max(count.values())
.Ich kann nicht widerstehen, one-liners für diese Art von Fragen
highest, number = reduce(lambda a, b:a[0].append(b[0]) or (a[0], b[1]) if b[1] == a[1] else (([b[0]], b[1]) if b[1] > a[1] else a), count.iteritems(), ([], -1))
InformationsquelleAutor kidosu | 2012-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Idee ist zu finden, der max-Wert und alle Schlüssel entsprechend zu diesem Wert:
1. zählen.values() liefert Liste von Werten, z.B. [120, 120, 100]. 2. max(count.values()) gibt einen max Wert aus Liste, z.B. 120. 3. zählen.items() gibt eine Liste von (Schlüssel, Wert) - Tupeln, z.B. [('a', 120), ('b', 120), ('c', 100)]. Die Letzte Zeile ist der sogenannte list comprehension. Schreiben Sie den gleichen code wie folgt. Durchlaufen (Schlüssel, Wert) - Paare in das dictionary, und wenn der Wert ist der gleiche als höchster, dann auf hinzufügen-Taste, um eine Liste.
Danke!!! Gibt es eine Möglichkeit, nicht auf Druck der Klammern?
InformationsquelleAutor Asterisk
Gleiche Idee wie Sternchen, aber ohne Iteration über die Liste zweimal. Etwas Ausführlicher ist.
InformationsquelleAutor Jos Kraaijeveld
Schnelle single-pass:
Und amüsante Weise mit defualtdict:
InformationsquelleAutor fraxel
Könnte dies ein Weg sein (wahrscheinlich nicht die effizienteste).
InformationsquelleAutor luke14free
Manchmal die einfachste Lösung die beste:
Den code oben ist etwas schneller als die zwei-pass-Lösung wie:
Natürlich ist es mehr, aber auf der anderen Seite ist es sehr klar und leicht zu Lesen.
Nichts Wert, dass
count.items()
wird in Python 2.x als auch (wenn auch nicht so effizient).InformationsquelleAutor Tupteq
Zum drucken einer Liste ohne Eimer. Verwendung :
oder mehr wortreich:
InformationsquelleAutor