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

时间:2018-12-20 00:20:58

标签: python 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的字典,并将数字填写为匹配的值,但是我很难将其包裹起来。谢谢。

4 个答案:

答案 0 :(得分:2)

您需要将输入列表映射到易于访问的标识符。一种方法是使用字典。然后对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]

答案 1 :(得分:1)

让我们创建一个字典,其中的键是字符串中不同的字母,在我们的示例中,我们将拥有键"A""B",它们都将它们代表的列表作为它们的值。 / p>

mappings = {"A":A_List, "B":B_List}

要从列表中获取正确的值,我们然后需要遍历字符串以找出我们正在使用的列表以及要查找索引的整数列表。只需使用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

答案 2 :(得分:1)

您可以使用包含列表的查找,从查找中找到目标列表,然后使用索引在目标列表中查找值。

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)

答案 3 :(得分:0)

我会做这样的事情:

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下映射不同列表的值。