如何从字符串组成词典?

2024-06-17 12:24:23 发布

您现在位置:Python中文网/ 问答频道 /正文

word = 'stacks' 
word_dict = {} # to form new dictionary formed from
for letter in word:
    word_dict[letter] += 1
print word_dict

我想从一个字符串创建一个新字典,跟踪word中的字母计数。所以我想得到的是:

^{pr2}$

但我不知道怎么做。我用当前代码得到KeyError


Tags: to字符串infromformnewfordictionary
2条回答

请改用^{} class

from collections import Counter

word_dict = Counter(word)

Counter执行完全相同的操作;计算word中每个字母的出现次数。在

在您的特定情况下,您没有首先检查该密钥是否已存在,如果不存在,则提供默认值。您可以使用dict.get()来执行此操作:

^{pr2}$

或者分别使用dict.setdefault()在递增之前显式设置默认值:

word = 'stacks' 
word_dict = {} # to form new dictionary formed from
for letter in word:
    word_dict.setdefault(letter, 0)
    word_dict[letter] += 1
print word_dict

或者亲自测试一下钥匙:

word = 'stacks' 
word_dict = {} # to form new dictionary formed from
for letter in word:
    if letter not in word_dict:
        word_dict[letter] = 0
    word_dict[letter] += 1
print word_dict

按效率的降序排列。在

或者您可以使用^{} object自动插入一个0,如果该键还不存在:

from collections import defaultdict

word_dict = defaultdict(int)
for letter in word:
    word_dict[letter] += 1
print word_dict

这本质上就是Counter类所做的,但是该类型添加了一些其他的细节,例如列出最常用的键或组合计数器。在

演示:

>>> from collections import defaultdict, Counter
>>> word = 'stacks' 
>>> word_dict = {} # to form new dictionary formed from
>>> for letter in word:
...     word_dict[letter] = word_dict.get(letter, 0) + 1
... 
>>> word_dict
{'a': 1, 'c': 1, 's': 2, 't': 1, 'k': 1}
>>> word_dict = defaultdict(int)
>>> for letter in word:
...     word_dict[letter] += 1
... 
>>> word_dict
defaultdict(<type 'int'>, {'a': 1, 'c': 1, 's': 2, 't': 1, 'k': 1})
>>> Counter(word)
Counter({'s': 2, 'a': 1, 'c': 1, 't': 1, 'k': 1})

试试这个

from collections import Counter
>>>Counter(word)
Counter({'s': 2, 'a': 1, 'c': 1, 't': 1, 'k': 1})

相关问题 更多 >