hallo ihr lieben,
ich bin neu hier und würd gerne wissen, ob mir jemand helfen kann bei volgendem programm:
ich möchte aus einer bestimmten anzahl (nehmen wir zb. elf verschiedene zahlen) den häufigsten wert rausbekommen. in diesem fall 1
zahlenbeispiele: 1,1,1,1,7,3,9,3,14,3
wie gehe ich das genau an?
danke im vorraus!
lg
hilfe für den häufigsten wert
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi astrid!astrid hat geschrieben:ich möchte aus einer bestimmten anzahl (nehmen wir zb. elf verschiedene zahlen) den häufigsten wert rausbekommen.
Willkommen im Python-Forum!
Ziemlicher Zufall? http://www.python-forum.de/topic-9889.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Von Leonidas' Beispiel abgekupfert:
mfg
Gerold
Code: Alles auswählen
words = ('bla', 'bla', 'blub', 'hallo', 'hallo', "z", "z")
frequencies = dict()
for word in words:
frequencies[word] = frequencies.get(word, 0) + 1
print max([ (value, key) for (key, value) in frequencies.items() ])
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi und willkommen im Forum.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def get_value_with_maximum_frequency(iterable):
freq_dict = dict()
for elem in iterable:
freq_dict[elem] = freq_dict.get(elem, 0) + 1
order = [(v, k) for k, v, in freq_dict.iteritems()]
order.sort(reverse=True)
return order[0][1]
if __name__ == '__main__':
li = [1,1,1,1,1,3,9,3,14,14,14,14]
print get_value_with_maximum_frequency(li) # 1
li = [1,1,1,1,1,3,9,3,9,9,9,9,9]
print get_value_with_maximum_frequency(li) # 9
okay, ich habe das jetzt mal abgeschrieben. und irgendwie funzt das nciht so recht. also ich habe das jetzt so verstanden, dass erst geordnet wird, und dann das maximum herausgegeben wird. also das maximum der anzahl der zahlen,ne?
nicht wie in diesem fall die 14, oder?
dann steht beim zweiten teil ja die liste. aber auf einmal ohne die 14. warum?
es tut mir leid, dass ich so blöd frage, aber ich bekomm sonst den dreh nicht raus.
lg
nicht wie in diesem fall die 14, oder?
dann steht beim zweiten teil ja die liste. aber auf einmal ohne die 14. warum?
es tut mir leid, dass ich so blöd frage, aber ich bekomm sonst den dreh nicht raus.
lg
EDIT: Ne. Im ersten Beispiel ist die eins 5 mal vorhanden und die vierzehn nur 4 mal. Daher wird die 1 zurückgegeben. So hatte ich deine Frage verstanden, das die Zahl die am meisten vorkommt zurückgegeben werden soll.astrid hat geschrieben:okay, ich habe das jetzt mal abgeschrieben. und irgendwie funzt das nciht so recht. also ich habe das jetzt so verstanden, dass erst geordnet wird, und dann das maximum herausgegeben wird. also das maximum der anzahl der zahlen,ne?
nicht wie in diesem fall die 14, oder?
Nur so. Hat kein besonderen hinterrund -- Wollte die Liste nicht zu lang machen.astrid hat geschrieben: dann steht beim zweiten teil ja die liste. aber auf einmal ohne die 14. warum?
BTW: Gib mal folgende liste an die Funktion: li = [1,1,1,1,1,1, 3,5, 9,9,9,9,9,9]
Da 1 und 9 gleichviel vorkommen, wird die höchste Zahl zurückgegeben. Wie genau wolltest du diese Diskrepanz lösen? -- Ich könnte mir verstellen das man dann beide Zahle zurückgibt.
Da 1 und 9 gleichviel vorkommen, wird die höchste Zahl zurückgegeben. Wie genau wolltest du diese Diskrepanz lösen? -- Ich könnte mir verstellen das man dann beide Zahle zurückgibt.
Nein, es gibt ja nicht immer eine Alternative die ausgeführt werden muss. Und Zeile 14 sieht okay aus. Was für einen Fehler bekommst Du denn?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann hast du die Einrückung falsch: Der Text muss wirklich am Anfang der Zeile 14 stehen, sonst geht es nicht.astrid hat geschrieben:error:inconsistent identation detected!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice