You need to enable JavaScript to run this app. Dataquest Python字典更新逻辑疑问:为何用content_ratings[bilal]?
优惠活动
大模型
产品
解决方案
定价
更多

Dataquest Python字典更新逻辑疑问:为何用content_ratings[bilal]?

字典频次统计中content_ratings[bilal]写法的核心逻辑解释

整体设计思路拆解

这段代码的核心目标是统计每个内容评级的出现次数,选择字典作为存储结构,是因为字典天生适配「标签-计数值」的映射关系:我们把每个评级字符串作为字典的键,把对应评级的出现总次数作为键关联的值,完全匹配统计需求。
循环过程中,变量bilal会依次拿到列表ratings里的每一个评级字符串,所有字典操作都是围绕「更新当前这个评级对应的计数值」展开的。

你疑问的红线部分的操作逻辑

content_ratings[bilal]的写法本质是对字典两种典型操作的组合,对应两种完全不同的场景:

  • 场景1:第一次遇到某类评级
    当if bilal in content_ratings判断为假时,执行的content_ratings[bilal] = 1,是在字典中新增一个键:键的内容就是当前循环拿到的评级字符串,关联的初始值设为1,代表这是我们第一次统计到这个评级的出现。
  • 场景2:之前已经遇到过某类评级
    当if bilal in content_ratings判断为真时,执行的content_ratings[bilal] += 1,是找到字典里已存在的这个键,把它关联的计数值在原有基础上加1,代表我们又统计到一次这个评级,需要更新累计计数。

这种分场景的写法是为了适配Python字典的基础访问规则:如果不做存在性判断,直接对字典中不存在的键做加法运算,会直接触发KeyError报错。提前判断键是否存在,先给新键设置合理初始值、再对已有键做累加,就能完全规避这类异常。

实际执行流程示例

拿初始空字典一步步走流程就会更清晰:

  • 初始状态:content_ratings = {}
  • 第一次循环拿到bilal = "4+":判断发现字典里没有这个键,新增键值对"4+": 1,字典变为{"4+":1}
  • 第二次循环还是拿到bilal = "4+":判断发现键已存在,将对应值加1变为2,字典变为{"4+":2}
  • 第三次循环拿到bilal = "4+":键已存在,值加1变为3,字典变为{"4+":3}
  • 第四次循环拿到bilal = "9+":字典无此键,新增键值对"9+":1,字典变为{"4+":3, "9+":1}
    …… 后续循环持续按照这个逻辑更新,最终得到的统计结果就是{'4+': 3, '9+': 1, '12+': 2, '17+': 2},和代码运行结果完全一致。

内容的提问来源于stack exchange,提问作者mirrat rashid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 10:45:08