首页 > 解决方案 > 为字符串的每个索引分配新值

问题描述

我正在尝试为字符分配一些值:

'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

标签: pythonpython-3.x

解决方案


这就是像字典这样的数据结构的用途。如果要将字符映射到值,最常见的方法是使用 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 至关重要。


推荐阅读