valor resueltos recorrer lista elementos ejercicios diccionarios diccionario dentro convertir buscar agregar python dictionary alphabet

resueltos - lista dentro de un diccionario python



¿Existe alguna forma rápida de generar un dict del alfabeto en Python? (8)

import string letters = string.ascii_lowercase d = dict(zip(letters, [0]*len(letters))

Quiero generar un dic con las letras del alfabeto como las teclas, algo así como

letter_count = {''a'': 0, ''b'': 0, ''c'': 0}

¿Cuál sería una forma rápida de generar ese dict, en lugar de tener que escribirlo?

Gracias por tu ayuda.

EDITAR
Gracias a todos por sus soluciones :)

La solución de nosklo es probablemente la más corta

Además, gracias por recordarme sobre el módulo de cadena de Python.


Aquí hay una versión compacta, usando una lista de comprensión :

>>> import string >>> letter_count = dict( (key, 0) for key in string.ascii_lowercase ) >>> letter_count {''a'': 0, ''c'': 0, ''b'': 0, ''e'': 0, ''d'': 0, ''g'': 0, ''f'': 0, ''i'': 0, ''h'': 0, ''k'': 0, ''j'': 0, ''m'': 0, ''l'': 0, ''o'': 0, ''n'': 0, ''q'': 0, ''p'': 0, ''s'': 0, ''r'': 0, ''u'': 0, ''t'': 0, ''w'': 0, ''v'': 0, ''y'': 0, ''x'': 0, ''z'': 0}


Encuentro esta solución más elegante:

import string d = dict.fromkeys(string.ascii_lowercase, 0)


Otro truco de Python 1-liner:

letter_count = dict([(chr(i),0) for i in range(97,123)])


Si planea usarlo para contar, le sugiero lo siguiente:

import collections d = collections.defaultdict(int)


También hay esto:

import string letter_count = dict((letter, 0) for letter in string.ascii_lowercase)


import string letter_count = dict(zip(string.ascii_lowercase, [0]*26))

o tal vez:

import string import itertools letter_count = dict(zip(string.lowercase, itertools.repeat(0)))

o incluso:

import string letter_count = dict.fromkeys(string.ascii_lowercase, 0)

La solución preferida puede ser diferente, dependiendo de los valores reales que desee en el dict.

Voy a adivinar aquí: ¿quieres contar las ocurrencias de letras en un texto (o algo similar)? Hay una forma mejor de hacer esto que comenzar con un diccionario inicializado.

Usar Counter del módulo de collections :

>>> import collections >>> the_text = ''the quick brown fox jumps over the lazy dog'' >>> letter_counts = collections.Counter(the_text) >>> letter_counts Counter({'' '': 8, ''o'': 4, ''e'': 3, ... ''n'': 1, ''x'': 1, ''k'': 1, ''b'': 1})


Un diccionario con las letras del alfabeto como claves y el valor es el mismo que la clave:

d = {''z'': ''z'', ''p'': ''p'', ''a'': ''a'', ''c'': ''c'', ''o'': ''o'', ''g'': ''g'' , ''d'': ''d'', ''k'': ''k'', ''f'': ''f'', ''v'': ''v'', ''m'': ''m'', ''x'': ''x'', '' q '':'' q '','' y '':'' y '','' r '':'' r '','' h '':'' h '','' n '':'' n '','' l '':'' l '','' j '' : ''j'', ''u'': ''u'', ''i'': ''i'', ''b'': ''b'', ''s'': ''s'', ''w'': ''w'', ''e'': '' e '','' t '':'' t ''}

d = dict.fromkeys(string.ascii_lowercase, 0) count=97 for i in range(26): d[chr(count)]=chr(count) count=count+1