2010-02-06 12 views
129

Tengo una lista de palabras en un diccionario con el valor = la repetición de la palabra clave, pero solo quiero una lista de palabras distintas, así que quería contar el número de palabras clave. ¿Hay alguna manera de contar el número de palabras clave o hay otra forma en que debería buscar palabras distintas?Contando el número de palabras clave en un diccionario en python

Respuesta

229
len(yourdict.keys()) 

o simplemente

len(yourdict) 

Si te gusta contar las palabras únicas en el archivo, es posible que utilices set y hacer como

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

Sé que esta publicación es antigua, pero tenía curiosidad. ¿Es este el método más rápido? O: ¿es * un * método razonablemente rápido para diccionarios grandes? – theJollySin

+1

Ambos '' len (yourdict.keys()) '' 'y' '' len (yourdict) '' 'son O (1). Este último es ligeramente más rápido. Vea mis pruebas a continuación. –

+2

Me gustaría señalar que también puede ir por los valores (sé que la pregunta no lo hizo) con 'len (yourdict.values ​​())' – ntk4

15

El número de palabras distintas (es decir, el recuento de entradas en el diccionario) se puede encontrar utilizando la función len().

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

para obtener todas las palabras distintas (es decir, las teclas), utilizan el método .keys().

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

muy agradable. ¡Muchas gracias por la ayuda! – Dan

0

Si la pregunta es sobre contar el número de palabras clave entonces recomendaría algo como

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

en la función principal tienen algo que recorra los datos y pasar los valores de la función 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" 

Las salidas de código

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