我想生成一个字母表中的字母作为键,类似于
letter_count = {'a': 0, 'b': 0, 'c': 0}
什么是快速生成该字典的方式,而不是我必须输入它?
谢谢你的帮助.
编辑
感谢大家的解决方案:)
nosklo的 解决方案可能是最短的
另外,感谢您提醒我有关Python 字符串模块的信息.
我发现这个解决方案更优雅:
import string d = dict.fromkeys(string.ascii_lowercase, 0)
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})
这是一个紧凑的版本,使用列表理解:
>>> 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}
如果您打算使用它进行计数,我建议如下:
import collections d = collections.defaultdict(int)
又一个1线程的Python黑客攻击:
letter_count = dict([(chr(i),0) for i in range(97,123)])