对于某些上下文,我有一长串字母和相应的整数(我已将其预定义为变量,即X = 4),我想了解如何获取此字符串并将其转换为数字单独
关于如何处理这个问题,我有几点想法,但我尝试的每种方法都没有完全解决。
我有一个长长的字符串,由5个不同的字符组成,随机重复。我如何单独检查每个字符,然后创建一个包含相应数字的相应字符串?我曾想过这样做是一个列表,但我不知道如何将每个字符自动插入列表中的项目,因为有数百个这样的字符。
重复一遍,必须对这些字母进行独立审核,然后给出其编号(预先定义)。
示例输入+输出:
输入:ASDF
并且,假设
A = 1
S = 2
D = 3
F = 4
输出:1234
有关更多背景信息,我想将所有这些数字加起来。
到目前为止,这是我的代码:
x = 10 # establishing roman numerals to integer conversion
l = 50
c = 100
d = 500
m = 1000
code = "LMXCDLMXDCLMXCDLMXDCLMXDCDXC"
code = code.replace(" ", "") # get rid of spaces
'''
code = (" ".join(code)) # adding spaces between each character
'''
code = list(code) # inserting each character as an individual in an array
print(code)
答案 0 :(得分:2)
如果您为每个def names(lista):
for i in range(len(lista)):
lista[i] = "<" + lista[i]
return lista
翻译的内容设置了dictionary
,即:
character
然后你可以选择d = {'a': 5, 'b': 9, 'c': 4, 'd': 2} #...
,例如:
string
使用s = "cabab"
从[{1}} list-comprehension
获取integer
中每个character
的相应string
,然后dictionary
形成join
的完整string
:
numbers
我们的小例子将给出:
''.join(str(d[i]) for i in s)
我认为这就是你想要的!
<强>更新强>
看过你最近的编辑后,我发现你想要"45959"
,这可以用同样的方式完成:
sum
为我的示例提供了sum(d[i] for i in s)
(32
+ 4
+ 5
+ 9
+ 5
}。
答案 1 :(得分:0)
下次尝试包含您的代码,或至少包含其中的重要部分。某处有一个帮助页面。
我的代码示例是a = 1,b = 2,c = 3,并输出一串数字,但只是以它为例,做你想做的事。
end_string = ''
for letter in string:
if letter=='a':
end_string+='1'
elif letter=='b':
end_string+='2'
elif letter=='c':
end_string+='3'
如果你想要一个总数,你可以使用int“total”。
如果字母具有连续值(如ASDF情况),则可以执行以下操作:
first_val = 1
letters=['A','S','D','F']
result = ''
for letter in string:
for set_letter in range(len(letters)):
if letters[i] == letter:
result += str(i+first_val)
哪个适用于任何长度的数组。
答案 2 :(得分:0)
您实际上不需要将输入操作为字符串本身,而是将其作为一系列字符。如果你要查找最后的总和,输出应该是一个整数列表,然后你可以加起来,而不是另一个字符串。
另一点是如何获得输入映射。最方便的格式是使用字典以便于查找。不要像现在这样做,而是执行以下操作:
# establishing roman numerals to integer conversion
conversion = {
'x': 10,
'l': 50,
'c': 100,
'd': 500,
'm': 1000
}
您可以执行conversion = locals()
之类的操作,将变量名称转换为字典键,但这会引入大量无效转换。
如果您有字典,可以使用单行字典理解从字符串中创建数字列表:
code = "LMXCDLMXDCLMXCDLMXDCLMXDCDXC"
numbers = [conversion[c] for c in code if c in conversion]
部分if c in conversion
将自动跳过字符串中的空格等无效字符。
可以使用内置sum
函数计算总和:
total = sum(numbers)
如果您不需要中间列表numbers
,您可以一步计算总和:
sum(conversion[c] for c in code if c in conversion)
答案 3 :(得分:-2)
你可以这样做。
// you could use
map = dict(a=2, s=3, d=4, f=5)
print ''.join([str(map[k]) for k in "asdffdsa"])