Как создать список с заранее определенным местом для каждого элемента.

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
Задача такая. Есть список, например ['143', '123', '4444', '99', '2000']
Требуется создать новый (или пересортировать этот имеющийся) таким образом, чтобы элементы в нём заняли места, которые определены, и хранятся в другом списке - [2, 1, 3, 4, 0]
То есть элементы первого списка должны получить индексы соответственно '143' - 2, '123' - 1, '4444' - 3, '99' - 4, '2000' - 0

В итоге должен получиться список ['2000', '123', '143', '4444', '99']
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Python:
original = ['143', '123', '4444', '99', '2000']
order = [2, 1, 3, 4, 0]
new_list = [v for _, v in sorted(dict(zip(order, original)).items())]
 
  • Мне нравится
Реакции: MacSeem

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
Сделал через промежуточный словарь. Неверное не оптимально, но работает.
Python:
list_orig = ['143', '123', '4444', '99', '2000']
order = [2, 1, 3, 4, 0]
list_new = []

_dict = {}

cnt = 0
for i in order:
    _dict[i] = list_orig[cnt]
    cnt += 1
print(_dict)

for i in range(0,5):
    list_new.append(_dict[i])
print(list_new)
 

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
Python:
original = ['143', '123', '4444', '99', '2000']
order = [2, 1, 3, 4, 0]
new_list = [v for _, v in sorted(dict(zip(order, original)).items())]

Спасибо, крутая штука!
 

Форум IT Специалистов