Вы можете использовать словарь и, поскольку Python 3.6
порядок сохраняется, поэтому вы получаете C
в качестве ключей и D
в качестве значений:
A = [1,1,2,2,3,3,4,5]
B = ["a","b","c","d","e","f","g","h"]
from random import randint
rename_to_B_for_numeric = [randint(0, 255) for _ in A]
result = {}
for idx, item in enumerate(A):
if item not in result:
# not sure about the type, so...
result[item] = "" if isinstance(B[idx], str) else 0
result[item] += B[idx]
print(result)
# {1: 'ab', 2: 'cd', 3: 'ef', 4: 'g', 5: 'h'}
print(list(result.keys()))
# [1, 2, 3, 4, 5]
print(list(result.values()))
# ['ab', 'cd', 'ef', 'g', 'h']
, очевидно, если тип элемента в B
это не строка и не число (в данном случае int
), вам нужно немного изменить код, чтобы получить тип по умолчанию. Или просто используйте else
:
if item not in result:
result[item] = B[idx]
else:
result[item] += B[idx]