Как использовать каждый символ в строке, чтобы представить результат для каждого целого числа в списке? - PullRequest
0 голосов
/ 20 декабря 2018

В 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 голосов
/ 20 декабря 2018

Вы можете использовать поиск, содержащий ваши списки, найти целевой список из поиска, а затем использовать индекс, чтобы найти значение в целевом списке.

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)
0 голосов
/ 20 декабря 2018

Давайте создадим словарь, в котором ключами являются разные буквы в строке, в нашем случае у нас были бы ключи "A" и "B", которые оба имели бы список, который они представляют в качестве своих значений.

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
0 голосов
/ 20 декабря 2018

Я бы сделал что-то вроде этого:

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.

0 голосов
/ 20 декабря 2018

Вам необходимо сопоставить свои списки ввода с легко доступными идентификаторами.Одним из способов является использование словаря.Затем используйте понимание списка с помощью 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...