[英]How can I use map() to triple each character of each string in a list, rather than tripling each string in the list?
[英]How to use each character in a string to represent the outcome for each integer in a list?
在python中,我有一个像这样的字符串:AABBAA。 该字符串始终为6个字符。 我也有一个整数列表,例如:[2,5,4,6,0,9]。 它们始终是一个整数(0-9),并且始终是6个整数(以匹配字符串)。 字符“ A”表示使用列表A_List,对于整数列表中与之匹配的数字(按索引),它使用该数字对A_List进行索引。 与字符“ B”相同。 因此,在上面的示例中,您将获得:
我尝试过制作一个具有键:A和B的字典,并将数字填写为匹配的值,但是我很难将其包裹起来。 谢谢。
您需要将输入列表映射到易于访问的标识符。 一种方法是使用字典。 然后对zip
使用列表zip
:
d = {'A': list(range(10)),
'B': list(range(10, 20))}
lists = 'AABBAA'
keys = [2,5,4,6,0,9]
res = [d[lst][key] for lst, key in zip(lists, keys)]
print(res)
[2, 5, 14, 16, 0, 9]
让我们创建一个字典,其中的键是字符串中的不同字母,在我们的例子中,我们将拥有键"A"
和"B"
,这两个键都将它们代表的列表作为它们的值。
mappings = {"A":A_List, "B":B_List}
为了从列表中获取正确的值,我们然后需要遍历字符串以找出我们正在使用的列表,以及整数列表以找到索引。 只需for i in range()
使用for i in range()
即可轻松完成,将列表的长度作为范围的大小。
indexes = [2, 5, 14, 16, 0, 9]
word = "AABBAA"
for i in range(len(indexes)):
value = mappings[word[i]][indexes[i]]
#Do whatever you want with the value here
您可以使用包含列表的查找,从查找中找到目标列表,然后使用索引在目标列表中查找值。
list_names = ['A', 'A', 'B', 'B', 'A', 'A']
list_indexes = [2, 5, 4, 6, 0, 9]
lists_lookup = {
'A': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
'B': [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
}
result = []
for i in range(0, len(list_names)):
target_list = lists_lookup[list_names[i]]
index = list_indexes[i]
result.append(target_list[index])
print(result)
我会做这样的事情:
newlist = []
for i in range(len(string)):
if string[i] == 'A':
newlist.append(A_list[i])
else:
newlist.append(B_list[i])
这样,您不必担心会持续多久,并且可以在A_list和B_list下映射不同列表的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.