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

33
задан Community 23 May 2017 в 12:18
поделиться

7 ответов

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

import string
d = dict.fromkeys(string.ascii_lowercase, 0)
55
ответ дан 27 November 2019 в 17:39
поделиться

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

import collections
d = collections.defaultdict(int)
8
ответ дан 27 November 2019 в 17:39
поделиться
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})
11
ответ дан 27 November 2019 в 17:39
поделиться

Вот компактная версия, с помощью понимание списка :

>>> 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}
8
ответ дан 27 November 2019 в 17:39
поделиться

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

letter_count = dict([(chr(i),0) for i in range(97,123)])
5
ответ дан 27 November 2019 в 17:39
поделиться

Также существует это:

import string
letter_count = dict((letter, 0) for letter in string.ascii_lowercase)
3
ответ дан 27 November 2019 в 17:39
поделиться
import string
letters = string.ascii_lowercase
d = dict(zip(letters, [0]*len(letters))
2
ответ дан 27 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: