重写为字典理解

时间:2019-06-12 13:30:00

标签: python dictionary-comprehension

我想用字典计算单词中所有字母的出现。到目前为止,我已经尝试在for循环中添加dict。

我想知道是否可以使用字典理解?

word = "aabcd"
occurrence = {}
for l in word.lower():
    if l in occurrence:
        occurrence[l] += 1
    else:
        occurrence[l] = 1

2 个答案:

答案 0 :(得分:12)

当然可以。

occurences = {k: word.count(k) for k in word}

print(occurences)

{'a': 2, 'b': 1, 'c': 1, 'd': 1}

或者使用Counter

from collections import Counter

c = Counter(word)

print(c)

Counter({'a': 2, 'b': 1, 'c': 1, 'd': 1})

答案 1 :(得分:2)

使用defaultdict的另一种解决方案。

from collections import defaultdict

occurrence = defaultdict(int)
for c in word.lower():
    occurrence[c] += 1

print(occurrence)

defaultdict(<class 'int'>, {'a': 2, 'b': 1, 'c': 1, 'd': 1})

或者另一个不使用任何导入的

occurrence = {}
for c in word.lower():
    occurrence[c] = occurrence.get(c,0) + 1

print(occurrence)

{'a': 2, 'b': 1, 'c': 1, 'd': 1}