首页 > 解决方案 > 有人可以解释 set.default 和 count[character] = count[character] + 1 是如何工作的吗?

问题描述

所以我正在处理课程中的一些代码,但我无法理解“count.setdefault”和“count[character] =”的工作原理。此代码输出消息字符串中每个字母出现的次数。我也不明白消息变量如何出现在空列表“计数列表”中。我知道这有点问,但我希望我能从你们那里得到一些有用的解释。

message = 'It was a bright cold day in April, and the clocks were striking thirteen.'
count = {}

for character in message:
    count.setdefault(character, 0)
    count[character] = count[character] + 1

print(count)

输出:

{'I': 1, 't': 6, ' ': 13, 'w': 2, 'a': 4, 's': 3, 'b': 1, 'r': 5, 'i': 6, 'g': 2, 'h': 3, 'c': 3, 'o': 2, 'l': 3, 'd': 3, 'y': 1, 'n': 4, 'A': 1, 'p': 1, ',': 1, 'e': 5, 'k': 2, '.': 1}

据我了解, .setdefault 的工作原理是,如果列表中不存在键,则为其分配一个值,如果键已经存在,则返回逗号后的第二个值。这也仅适用于 python 控制台。为什么?

标签: python-3.xfor-loop

解决方案


您可以在这里找到很好的解释 - .setdefault() 是如何工作的?.

你会发现它是等效的方法 - collections.Counter,它可以更有效地实现相同的结果:

>>> from collections import Counter
>>> counts = Counter(message)
>>> counts == count   
     True 
 

推荐阅读