46

アルファベットの文字をキーにした辞書を生成したいのですが、

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

私がそれを入力する必要があるのではなく、そのdictを生成するための高速な方法は何でしょうか?

ご協力いただきありがとうございます。

編集
あなたの解決策をみんなに感謝します:)

noskloの ソリューションはおそらく最短です

また、Python文字列モジュールについて思い出させてくれてありがとう。

4

13 に答える 13

77

私はこの解決策がよりエレガントだと思います:

import string
d = dict.fromkeys(string.ascii_lowercase, 0)
于 2009-01-17T18:36:15.443 に答える
15
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)

辞書で必要な実際の値に応じて、推奨される解決策は異なる場合があります。


ここで推測してみましょう: テキスト (または類似のもの) 内の文字の出現回数をカウントしますか? これを行うには、初期化された辞書から始めるよりも良い方法があります。

モジュール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})
于 2009-01-17T17:03:27.500 に答える
8

リスト内包表記を使用したコンパクトなバージョンを次に示します。

>>> 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}
于 2009-01-17T17:01:01.703 に答える
8

カウントに使用する場合は、次のことをお勧めします。

import collections
d = collections.defaultdict(int)
于 2009-01-17T18:19:27.440 に答える
5

さらに別のワンライナー Python ハック:

letter_count = dict([(chr(i),0) for i in range(97,123)])
于 2009-01-17T18:17:54.230 に答える
3

これもあります:

import string
letter_count = dict((letter, 0) for letter in string.ascii_lowercase)
于 2009-01-17T16:59:54.637 に答える
2
import string
letters = string.ascii_lowercase
d = dict(zip(letters, [0]*len(letters))
于 2009-01-17T17:05:46.077 に答える
1

辞書と範囲を直接使用できるため、独自の関数を作成して簡単にカスタマイズできます。

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}
于 2019-06-21T08:18:31.813 に答える