2010-02-06 6 views
129

Ich habe eine Liste von Wörtern in einem Wörterbuch mit dem Wert = die Wiederholung des Schlüsselworts, aber ich möchte nur eine Liste von verschiedenen Wörtern, also wollte ich die Anzahl der Schlüsselwörter zählen. Gibt es eine Möglichkeit, die Anzahl der Schlüsselwörter zu zählen, oder gibt es eine andere Möglichkeit, nach bestimmten Wörtern zu suchen?Zählen der Anzahl der Schlüsselwörter in einem Wörterbuch in Python

Antwort

229
len(yourdict.keys()) 

oder nur

len(yourdict) 

Wenn Sie eindeutige Wörter in der Datei zählen möchten, können Sie einfach set nutzen und tun wie

len(set(open(yourdictfile).read().split())) 
+4

Ich weiß, dass dieser Beitrag alt ist, aber ich war neugierig. Ist das die schnellste Methode? Oder: Ist es eine * ziemlich schnelle Methode für große Wörterbücher? – theJollySin

+1

Sowohl '' 'len (yourdict.keys())' '' und '' 'len (yourdict)' '' sind O (1). Letzteres ist etwas schneller. Siehe meine Tests unten. –

+2

Ich möchte darauf hinweisen, dass Sie auch für die Werte (ich weiß, dass die Frage nicht gefragt hat) mit 'len (yourdict.values ​​())' gehen – ntk4

15

Die Anzahl einzelner Wörter (z. B. Anzahl der Einträge im Wörterbuch) kann mit der Funktion len() gefunden werden.

> a = {'foo':42, 'bar':69} 
> len(a) 
2 

Um alle unterschiedliche Wörter (das heißt die Tasten), verwenden Sie die .keys() Methode.

> list(a.keys()) 
['foo', 'bar'] 
+0

sehr schön übergeben. Vielen Dank für die Hilfe! – Dan

0

Wenn die Frage nach ist Zählen der Anzahl der Schlüsselwörter würde dann etwas wie

empfehlen
def countoccurrences(store, value): 
    try: 
     store[value] = store[value] + 1 
    except KeyError as e: 
     store[value] = 1 
    return 

in der Hauptfunktion haben, etwas, das die Datenschleifen durch und um die Werte in Funktion countoccurrences

if __name__ == "__main__": 
    store = {} 
    list = ('a', 'a', 'b', 'c', 'c') 
    for data in list: 
     countoccurrences(store, data) 
    for k, v in store.iteritems(): 
     print "Key " + k + " has occurred " + str(v) + " times" 

Die Codeausgänge

Key a has occurred 2 times 
Key c has occurred 2 times 
Key b has occurred 1 times