Anstatt ein Wörterbuch, verwenden sie einen collections.Counter()
object genannt senden; es ist ein Fachwörterbuch, das aus dem Feld Ihre gewünschte Funktionalität enthält:
from collections import Counter
counts = Counter()
with open("/Users/Adnan/Desktop/twitter_data.txt") as data:
for tag in data:
for line in data:
for part in line.capitalize().split():
if "#" in part:
counts[part] += 1
with open('trending.txt') as trending:
for hashtag, count in counts.most_common():
print(hashtag, count, sep=',', file=trending)
Die Counter.most_common()
method erzeugt (key, count)
Werte in sortierter Reihenfolge, von am häufigsten zu dest. Sie können, indem man in einer ganzen Zahl die Anzahl der zurückgegebenen Einträge beschränken:
with open('trending.txt') as trending:
# The 10 most popular hashtags
for hashtag, count in counts.most_common(10):
print(hashtag, count, sep=',', file=trending)
Beachten Sie, dass Ihre for tag in data
nur einmal laufen; es wird die erste Zeile lesen, nach der for line in data:
den Rest der Datei verarbeitet. Sie könnten next(data, None)
anstelle dieser Schleife verwenden:
with open("/Users/Adnan/Desktop/twitter_data.txt") as data:
tag = next(data, None) # read the first line
for line in data:
for part in line.capitalize().split():
if "#" in part:
counts[part] += 1
Last but not least, wenn Sie versuchen, eine CSV-Datei (Comma Separated Daten) zu erzeugen, verwenden Sie die csv
module:
import csv
with open('trending.txt') as trending:
writer = csv.csvwriter(trending)
writer.writerows(counts.most_common())
Die oben schreibt alle Zählwerte in sortierter Reihenfolge in die CSV-Datei.
@ Smac89: Sortierung nach * Wert *, in umgekehrter Reihenfolge. Dazu gehört ein Zählvorgang. –