die x größten values aus einem Wörterbuch filtern
Verfasst: Sonntag 21. Juni 2009, 21:55
Hallo zusammen,
ich wollte mal fragen, wie man aus einem (relativ großen) Wörterbuch
am effektivsten die besten Treffer herrausholt. Meine Implementierung derzeit ist ziemlich basic und an der Ausgabe müsste man eigentlich auch nochmal rumsortieren:
Die Werte im eigentlichen Code werden nicht wie hier direkt verglichen sondern mit Rückgabewerten einer Funktion.
ich wollte mal fragen, wie man aus einem (relativ großen) Wörterbuch
am effektivsten die besten Treffer herrausholt. Meine Implementierung derzeit ist ziemlich basic und an der Ausgabe müsste man eigentlich auch nochmal rumsortieren:
Code: Alles auswählen
import random
def top5(p):
def _einordnen(x,dic):
for key in dic.iterkeys():
if dic[key]<x.values()[0]:
val={key:dic.pop(key)}
dic.update(x)
dic=_einordnen(val,dic)
break
return dic
nearest=dict.fromkeys(range(5),0.0)
for i in p.iterkeys():
k={i:p[i]}
nearest=_einordnen(k,nearest)
return nearest
p=dict((i,random.randint(1,300)) for i in range(15))
print p
print top5(p)
{0: 143, 1: 138, 2: 236, 3: 254, 4: 263, 5: 156, 6: 225, 7: 217, 8: 121, 9: 200, 10: 41, 11: 190, 12: 267, 13: 239, 14: 35}
{3: 254, 4: 263, 12: 267, 13: 239}