ich ein Problem mit dem folgenden Problem:Am häufigsten vorkommenden n Wörter in einem String
Problem:
Implementieren einer Funktion count_words() in Python, die einen String s als Eingabe und eine Reihe n und gibt die n am häufigsten vorkommenden Wörter in s zurück. Der Rückgabewert sollte eine Liste von Tupeln sein - die obersten n Wörter gepaart mit ihren jeweiligen Zählungen [(,), (,), ...], sortiert in absteigender Zählreihenfolge.
Sie können davon ausgehen, dass alle Eingaben in Kleinbuchstaben erfolgen und keine Interpunktionszeichen oder andere Zeichen (nur Buchstaben und einzelne Trennzeichen) enthalten. Im Falle eines Unentschiedens (gleiche Anzahl), bestellen Sie die gebundenen Wörter alphabetisch.
ZB:
Druck count_words ("betty ein wenig Butter gekauft, aber die Butter war bitter", 3) Ausgang:
[('Butter', 2), ('a', 1), ('betty', 1)]
Dies ist meine Lösung:
"""Count words."""
from operator import itemgetter
from collections import Counter
def count_words(s, n):
"""Return the n most frequently occuring words in s."""
# TODO: Count the number of occurences of each word in s
words = s.split(" ");
words = Counter(words)
# TODO: Sort the occurences in descending order (alphabetically in case of ties)
print(words)
# TODO: Return the top n words as a list of tuples (<word>, <count>)
top_n = words.most_common(n)
return top_n
def test_run()
"""Test count_words() with some inputs."""
print(count_words("cat bat mat cat bat cat", 3))
print(count_words("betty bought a bit of butter but the butter was bitter", 3))
if __name__ == '__main__':
test_run()
Das Problem besteht darin, dass Elemente mit gleichen Zählungen sind orde rot willkürlich, wie kann ich diese Elemente nach alphabetischer Reihenfolge bestellen?
[Sie sortieren] (https://wiki.python.org/moin/HowTo/Sorting). – usr2564301
Wie kann ich nur die Elemente mit gleicher Anzahl sortieren? –