2010-02-06 13 views
129

Ho una lista di parole in un dizionario con il valore = la ripetizione della parola chiave, ma io voglio solo un elenco di parole distinte così ho voluto contare il numero di parole chiave. C'è un modo per contare il numero di parole chiave o c'è un altro modo per cercare parole distinte?Conteggio del numero di parole chiave in un dizionario in python

risposta

229
len(yourdict.keys()) 

o semplicemente

len(yourdict) 

Se vi piace contare parole uniche nel file, si potrebbe utilizzare set e fare come

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

So che questo post è vecchio, ma ero curioso. È questo il metodo più veloce? Oppure: è * un * metodo abbastanza veloce per i dizionari di grandi dimensioni? – theJollySin

+1

Entrambi i '' len (yourdict.keys()) '' '' e '' 'len (yourdict)' '' sono O (1). Quest'ultimo è leggermente più veloce. Vedi i miei test qui sotto. –

+2

vorrei sottolineare che si può anche andare per i valori (So che la domanda non ha chiesto esso) con 'len (yourdict.values ​​())' – ntk4

15

Il numero di parole distinte (cioè conteggio delle voci del dizionario) possono essere trovati utilizzando la funzione len().

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

Per ottenere tutte le parole distinte (cioè i tasti), usa il metodo .keys().

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

molto piacevole. Grazie mille per l'aiuto! – Dan

0

Se la domanda riguarda contando il numero di parole chiave, allora consiglierei qualcosa come

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

nella funzione principale hanno qualcosa che scorre i dati e passare i valori di funzione 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" 

Le uscite di codice

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