为字母赋值并求和序列(不基于字母顺序)

2024-04-24 12:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我想知道是否可以给序列中的一个字母赋值,然后求序列的和。到目前为止,我只看到了按字母顺序排列的。我有一个序列列表:

例如:ACEPAAG(每行有一个序列),并希望将值赋给字母:A = 100P = 150等,然后对该序列求和。你知道吗

到目前为止,我遇到了以下情况:

import string
d = {c: i for i,c in enumerate(string.ascii_uppercase, 150)}
d 
word = "AGP"
score = sum(d[c] for c in word)
score

我知道这只是增加了150和字母表,有没有办法改变这一点,让我可以选择什么价值与哪个字母?你知道吗


Tags: inimport列表forstring字母ascii情况
3条回答

您可以将两个列表映射到字典中,如:

l = map(chr, range(65, 91))

print l
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

n = range(0, 27)

print n
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]

d = dict(zip(l,n))

print d
{'A': 0, 'C': 2, 'B': 1, 'E': 4, 'D': 3, 'G': 6, 'F': 5, 'I': 8, 'H': 7, 'K': 10, 'J': 9, 'M': 12, 'L': 11, 'O': 14, 'N': 13, 'Q': 16, 'P': 15, 'S': 18, 'R': 17, 'U': 20, 'T': 19, 'W': 22, 'V': 21, 'Y': 24, 'X': 23, 'Z': 25}

所以,你可以加入一个你需要的数字列表。你知道吗

score = sum(d[c] for c in word)
print score
21

I'm wondering if it's possible to assign a value to a letter in a sequence and then ask for the sum of that sequence.

我不知道你在做什么,所以我只想根据我认为你在做什么来回答。你想把一系列字母的ASCII值加起来,对吗?你知道吗

sequence_of_letters = "A sequence of letters and characters is better known as a string!"

print sum([ord(x) for x in sequence_of_letters]) # ord gives you the ASCII value
>>>6049

这就是你要找的吗?你知道吗

我建议创建一个包含所有值的列表v,其中索引0处的值表示a,索引25处的值表示Z,等等

然后,不要像使用“i”那样使用它,而是使用它作为v的索引:

a = {c: v[i] for i,c in enumerate(string.ascii_uppercase)}

这样你就可以选择你想要的每个字母的价值。你知道吗

请记住,要使其工作,v中必须至少有26个元素,否则将出现索引超出范围错误。你知道吗

相关问题 更多 >