繁体   English   中英

如何使用字符串中的每个字符表示列表中每个整数的结果?

[英]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_list [2]
  • 的a_list [5]
  • B_List [4]
  • B_List [6]
  • 的a_list [0]
  • 的a_list [9]

我尝试过制作一个具有键: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM