Contando el número de palabras clave en un diccionario en python

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 forma de contar el número de palabras clave o hay otra forma en que debería buscar palabras distintas?

len(yourdict.keys()) 

o solo

 len(yourdict) 

Si te gusta contar palabras únicas en el archivo, puedes usar set y hacer como

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

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), utilice el método .keys() .

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

Si la pregunta es sobre 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, tenga algo que recorra los datos y pase los valores a la función de ocurrencias de cómputo

 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 

Llamar a len() directamente en tu diccionario funciona, y es más rápido que construir un iterador, d.keys() , y llamar a len() en él, pero la velocidad de cualquiera de ellas será despreciable en comparación con cualquier otra cosa que esté haciendo tu progtwig.

 d = {x: x**2 for x in range(1000)} len(d) # 1000 len(d.keys()) # 1000 %timeit len(d) # 41.9 ns ± 0.244 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) %timeit len(d.keys()) # 83.3 ns ± 0.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)