python - 在 Python 中从字典中添加值
问题描述
例如,用户将输入四种颜色(允许重复),其中orange = o, blue = b, green = g, red = r
. 我将为这些颜色中的每一种分配值。
dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
colorScore = 0
for i in range(1):
color = input("Enter 4 characters of colors: ")
if "o" in color:
colorScore += dictColor["o"]
if "b" in color:
colorScore += dictColor["b"]
if "g" in color:
colorScore += dictColor["g"]
if "r" in color:
colorScore += dictColor["r"]
print("The color score is",colorScore)
如果用户输入rbgo
,程序运行良好并输出值 18。但是,如果用户输入一个重复项,例如rrgo
,程序输出 16,这不是正确的输出。我如何让我的程序能够识别这些重复项?
解决方案
您只对每个角色进行一次测试。循环输入字符串,并将每个字符用作字典的键:
dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
color = input("Enter 4 characters of colors: ")
colorScore = 0
for character in color:
if character in dictColor:
colorScore += dictColor[character]
或者,使用sum()
函数,并dict.get()
为任何无法识别的字符返回默认颜色分数 0:
dictColor = {"o": 4, "b": 2, "g": 7, "r": 5}
color = input("Enter 4 characters of colors: ")
colorScore = sum(dictColor.get(c, 0) for c in color)
上面将生成器表达式传递给sum()
函数,该函数将遍历表达式的每个结果。因此,对于c
字符串中的每个color
(每个字符),dictColor.get(c, 0)
表达式获取给定键的值,如果键缺失,则获取 0,sum()
并将所有这些结果相加。
推荐阅读
- java - 在 windows 10 中使用 jpackage 创建 windows 包的问题?
- python - PANDAS(填充日期时间和 ffill() 大熊猫数据框中的数据)
- apache-spark - 在列中查找可变长度字符串
- c - 如何在vim中更改宏后大括号的缩进
- wordpress - 如何在 wordpress 中自动运行 cron 作业而不进行任何操作?
- regex - 正则表达式 XML
- python - 无法在 macOS 中从 3.7.7 升级 python 3.8
- reactjs - 项目未在 Heroku 中推送
- python - 将多个列表转换为字典
- javascript - 使用 JavaScript 展平深度嵌套的对象