python-3.x - 有人可以解释 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 控制台。为什么?
解决方案
您可以在这里找到很好的解释 - .setdefault() 是如何工作的?.
你会发现它是等效的方法 - collections.Counter,它可以更有效地实现相同的结果:
>>> from collections import Counter
>>> counts = Counter(message)
>>> counts == count
True
推荐阅读
- ssl - LDAP 的 Haproxy ssl 终止
- scala - 从 Spark 中的 textFile 读取和转换数据
- sql-server - T-Sql 删除所有点但保留最后一个
- sql - 如何使用“IF 语句”创建存储过程?
- vue.js - 使用Vue从表中删除行
- python - 使用 Matplotlib Python 绘图时跳过丢失的时间戳
- java - 带有浮点值的Java机器人类mouseclick可能吗?
- python - 遍历 url 列表并用 %20 替换空格
- asp.net-core-webapi - 更改 Asp.net core Web Api 中的默认路由
- excel - 如何在下一个空表行中粘贴单元格范围?