【发布时间】:2020-12-26 21:46:44
【问题描述】:
创建一个包含给定字符串中每个字符出现频率的字典
str1 = "peter piper picked a peck of pickled peppers"
freq = {}
freq2 = {}
for c in str1:
freq[c] = freq.get(c, 0) + 1
freq2 = {c: freq2.get(c, 0) + 1 for c in str1}
print(freq)
print(freq2)
输出
{'p': 9, 'e': 8, 't': 1, 'r': 3, ' ': 7, 'i': 3, 'c': 3, 'k': 3, 'd': 2, 'a': 1, 'o': 1, 'f': 1, >'l': 1, 's': 1}
{'p': 1, 'e': 1, 't': 1, 'r': 1, ' ': 1, 'i': 1, 'c': 1, 'k': 1, 'd': 1, 'a': 1, 'o': 1, 'f': 1, >'l': 1, 's': 1}
我只是想知道为什么字典理解没有给我正确的答案?
【问题讨论】:
-
freq2.get(c, 0)始终为0,新的freq2dict 仅在 dict comphrneions 完成后绑定 -
只是一种愚蠢但可能很有趣的其他方法:
freq2.update((c, freq2.get(c, 0) + 1) for c in str1) -
顺便说一句:如果你有
freq2 = { ...这样的行,那么你不需要之前的freq2 = {}。 -
您的意思是:
freq2 = copy(freq)?
标签: python python-3.x dictionary dictionary-comprehension