python - 为字符串的每个索引分配新值
问题描述
我正在尝试为字符分配一些值:
'a'==12
'b'==22
'C'==15
'D'==29
我的函数 sumassign(s) 要求用户输入上述字符,我应该返回上述字符的总和,预期输出如下所示
sumassign("abC")
49
我的代码如下。
def sumassign(s):
return sum(i=='a'==12 or i=='b'==22 or i=='C'==15 or i=='D'==29 for i in s)
当我尝试使用我的代码时,它返回 0 而不是总和
sumassign("abC")
0
解决方案
这就是像字典这样的数据结构的用途。如果要将字符映射到值,最常见的方法是使用 dict。如果你这样做,其他一切都会变得容易得多。例如:
mapping = {
'a': 12,
'b': 22,
'C': 15,
'D': 29
}
def sumassign(s):
''' lookup up the value of every item in s an take the sum '''
return sum(mapping[d] for d in s)
sumassign("abC")
# 49
值得花时间至少对列表和字典有一个基本的了解,然后再走得更远。它们对于编写惯用的 Python 至关重要。
推荐阅读
- git - 使用 Git-hooks 防止合并某些分支
- python - 在 OSX 中运行 TensorFlow
- uwp - 如何使用 Angular 创建 UWP 应用程序
- node.js - 我是否必须一次传递所有车把数据,或者这些数据可以来自多个不同的地方?
- docker - Docker - 在 docker compose 中的容器之间共享卷
- arrays - 对象数组中的 v-for 问题
- reactjs - 如何在 React Native 中将容器的尺寸指定为其子项的总尺寸?
- eclipse - 在 Eclipse 中重构为 Java 8 的检查设置
- firebase - 在 Cloud Functions 中结合 Firebase 数据触发器 .create .update(可能还有 .remove)
- agens-graph - 如何在 AgensGraph 上记录 ddl 命令?