Подтвердить что ты не робот

Есть ли быстрый способ генерировать букву алфавита в Python?

Я хочу сгенерировать dict с буквами алфавита в качестве ключей, что-то вроде

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

что было бы быстрым способом генерировать этот дикт, а не вводить его мне?

Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ
Спасибо всем за ваши решения :)

nosklo в раствор, вероятно, самая короткая

Также спасибо за напоминание о строковом модуле Python.

4b9b3361

Ответ 1

Я нахожу это решение более элегантным:

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

Ответ 2

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

или возможно:

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

или даже:

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

Предпочтительное решение может быть другим, в зависимости от фактических значений, которые вы хотите в dict.


Я буду угадывать здесь: хотите ли вы подсчитать количество букв в тексте (или что-то подобное)? Существует лучший способ сделать это, начиная с инициализированного словаря.

Используйте Counter из модуля 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})

Ответ 3

Здесь компактная версия с использованием понимания списка:

>>> 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}

Ответ 4

Если вы планируете использовать его для подсчета, я предлагаю следующее:

import collections
d = collections.defaultdict(int)

Ответ 5

Еще один взломанный Python с 1 строкой:

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

Ответ 6

Вот и это:

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

Ответ 7

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

Ответ 8

очень легко со словарным пониманием: {chr(i+96):i for я in range(1,27)} генерирует:

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12, 'o': 15, 'n': 14, 'q': 17, 'p': 16, 's': 19, 'r': 18, 'u': 21, 't': 20, 'w': 23, 'v': 22, 'y': 25, 'x': 24, 'z': 26}

Вы можете создать то же самое для Capital AZ с помощью chr(i+64)

Ответ 9

Вы можете использовать словарь и диапазон напрямую, так что вы можете создать свою собственную функцию и легко настроить ее.

def gen_alphabet(start, value):
    return {chr(ord('a') + i) : 0 for i in range(value)}

print(gen_alphabet('a', 26))

ВЫХОД:

>>> {'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}

Ответ 10

Словарь с буквами алфавита в виде ключей и значением совпадает с ключом:

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