Ich hab volgendes Problem: ich hab ein Dictionary mit File namen drinen und einen Wert wie oft sie vorkommen. Diese wurden aus einer Log Datei ausgelesen. Also etwa diese Form:
mydic = {"File":2, "File2":4, "File3":5}usw.
Jetzt will ich das er mir das File ausgibt was am häufigsten vorkommt, aber ich habe überhaupt keinen Ansatz wie ich das machen könnte.
Könnte mir irgendwer einen Tipp geben? Wäre sehr dankbar
Aus dictionary das häufigste bekommen
Code: Alles auswählen
>>> d = {"a":1, "b":2, "c":3, "d":8, "e":4}
>>> import operator
>>> max(d.iteritems(), key=operator.itemgetter(1))[0]
'd'
Das Leben ist wie ein Tennisball.
Code: Alles auswählen
>>> d = {"a":1, "b":2, "c":3, "d":8, "e":4}
>>> max(d.items(), key=lambda e:e[1])[0]
'd'
Der Aufruf von "max" erfordert das Durchgehen des ganzen Tuples. Geht auch ohne:
Gruß,
Christian
edit: Sorry, gemeint war natürlich das Snippet von EyDu - nicht numerix.
Code: Alles auswählen
sorted(d.items(), key = operator.itemgetter(1))[-1][0]
Christian
edit: Sorry, gemeint war natürlich das Snippet von EyDu - nicht numerix.
Code: Alles auswählen
>>> max((k,j) for j,k in d.items())
(8, 'd')
# bzw
>>> max((k,j) for j,k in d.items())[1]
'd'
*klugscheiß ein* *wieder aus*
Code: Alles auswählen
max((k, j) for j, k in d.iteritems())[1]
@CM: Äh, statt einfach mit `max()` *linear* durchzugehen *sortierst* Du also lieber!?
Code: Alles auswählen
max(d, key=d.__getitem__)
Das gefällt mir.bords0 hat geschrieben:Code: Alles auswählen
max(d, key=d.__getitem__)
Die letzte Version finde ich auch ganz ansprechend!
@BJ & EyDu: Nö, ich habe das nur falsch interpretiert und in EyDus Version max und sorted kombiniert gesehen - heute ist irgendwie wirklich nicht mein Tag und die Beiträge hier auch nicht gerade produktiv, siehe OT-Thread ...
@BJ & EyDu: Nö, ich habe das nur falsch interpretiert und in EyDus Version max und sorted kombiniert gesehen - heute ist irgendwie wirklich nicht mein Tag und die Beiträge hier auch nicht gerade produktiv, siehe OT-Thread ...
Man kann noch 8 Zeichen sparen:
Code: Alles auswählen
max(a, key=a.get)