Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erläuterung der Idee, die Wortzahl in Python zu zählen
Dieser Artikel stellt hauptsächlich die detaillierte Idee des Zählens der Wortanzahl in Python vor. Der Artikel bietet Ihnen auch eine Lösung ohne Verwendung von Modulen von Drittanbietern.
Problembeschreibung:
Verwenden Sie Python, um die Funktion count_words() zu implementieren. Diese Funktion gibt eine Zeichenfolge s und eine Zahl n ein und gibt die n am häufigsten vorkommenden Wörter in s zurück . Der Rückgabewert ist eine Liste von Tupeln, einschließlich der n Wörter mit den häufigsten Vorkommen und ihrer Häufigkeit, also [(3eeb61858e67fe2c766f6a2963ef7be9, 824a12f8eceff614c2d47321fd23ca32), (262fc3dea96bff548f487caec9a03150, Sie können davon ausgehen, dass alle Eingaben in Kleinbuchstaben erfolgen und keine Satzzeichen oder andere Zeichen enthalten (nur Buchstaben und ein einzelnes Leerzeichen). Bei gleicher Anzahl an Vorkommen werden diese in alphabetischer Reihenfolge geordnet. Zum Beispiel: Ausgabe: [('butter', 2), (' a ', 1), ('betty', 1)] Ideen zur Lösung des Problems: 1 Die Zeichenfolge s führt eine Leerraumaufteilung durch, um alle geteilten Wortlisten zu erhalten, z. B.: ['betty', 'bought', 'a', 'bit', 'of', 'butter', 'but', 'the', ' butter', 'was', 'bitter'] 2. Erstellen Sie eine Maplist und konvertieren Sie split_s in eine Liste, deren Elemente Tupel sind, wie zum Beispiel: [('betty', 1), ('gekauft', 1) , ('a', 1), ('bit', 1), ('von', 1), ('butter', 1), ('aber', 1), ('the', 1) , ( 'butter', 1), ('was', 1), ('bitter', 1)] 3. Füge die Elemente in der Maplist zusammen gleich, dann ist der erste Indexwert des Tupels derselbe. Die beiden Indexwerte werden addiert. // Hinweis: Bereiten Sie sich auf die Verwendung von defaultdict vor. Die erhaltenen Daten lauten wie folgt: {'betty': 1, 'gekauft': 1, 'a': 1, 'bit': 1, 'von': 1, 'butter': 2, 'aber': 1, 'the': 1, 'was': 1, 'bitter': 1} 4. Sortieren Sie alphabetisch nach Schlüssel und erhalten Sie Folgendes: [('a', 1), ('betty', 1 ), ('bit', 1), ('bitter', 1), ('gekauft', 1), ('aber', 1), ('Butter', 2), ('von', 1) , ('the', 1), ('was', 1)] 5. Führen Sie eine sekundäre Sortierung durch, sortieren Sie nach Wert und erhalten Sie Folgendes: [('butter', 2), ('a ' , 1), ('betty', 1), ('bit', 1), ('bitter', 1), ('gekauft', 1), ('aber', 1), ('von', 1 ), ('the', 1), ('was', 1)] 6. Verwenden Sie Slicing, um *Datengruppen mit höherer Häufigkeit zu extrahieren Zusammenfassung: Nicht verfügbar auf Python3 Sortierergebnisse von defaultdict sind ebenfalls korrekt, aber nicht korrekt auf Python2. defaultdict selbst hat keine Reihenfolge. Um die Liste zu unterscheiden, muss sie sortiert werden. Sie können auch versuchen, es selbst zu schreiben, ohne Module von Drittanbietern zu verwenden Lösung 1 (Defaultdict verwenden): Lösung 2 (Zähler verwenden) Verwandte Empfehlungen: Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Idee, die Wortzahl in Python zu zählen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!print count_words("betty bought a bit of butter but the butter was bitter",3)
from collections import defaultdict
"""Count words."""
def count_words(s, n):
"""Return the n most frequently occuring words in s."""
split_s = s.split()
map_list = [(k,1) for k in split_s]
output = defaultdict(int)
for d in map_list:
output[d[0]] += d[1]
output1 = dict(output)
top_n = sorted(output1.items(), key=lambda pair:pair[0], reverse=False)
top_n = sorted(top_n, key=lambda pair:pair[1], reverse=True)
return top_n[: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", 4))
if __name__ == '__main__':
test_run()
from collections import Counter
"""Count words."""
def count_words(s, n):
"""Return the n most frequently occuring words in s."""
split_s = s.split()
split_s = Counter(name for name in split_s)
print(split_s)
top_n = sorted(split_s.items(), key=lambda pair:pair[0], reverse=False)
print(top_n)
top_n = sorted(top_n, key=lambda pair:pair[1], reverse=True)
print(top_n)
return top_n[: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", 4))
if __name__ == '__main__':
test_run()