Создать словарь на основе двух списков

Проблема заключается в том, чтобы создать новый словарь на основе данных массива целых чисел и другого словаря. Новый словарь должен отображать список городов, которых посетил коммивояжер.

Для данных [2, 4, 5, 6, 3, 1, 2] это должно выглядеть так ['Zhytomyr', 'Poltava', 'Chernihiv', 'Lviv', 'Vinnitsa', 'Kiev', 'Zhytomyr']

Мой код:

import numpy as np

arr = np.array([2, 4, 5, 6, 3, 1, 2])
items= {}
items = dict()
cities = {
    "Kyiv": 1,
    "Zhytomyr" : 2,
    "Vinnitsa" : 3,
    "Poltava" : 4,
    "Chernihiv" : 5,
    "Lviv" : 6,
    }

print(arr)    
dictkeys = list (cities.keys())
print("List of keys in Dictionary : ", dictkeys)
print(cities)

for i in arr:
    dictKey = cities.get(i)
    items[dictKey].append(i) 

dictkeys2 = list (items.keys())
print("List of keys in Dictionary : ", dictkeys2)      

Результат кода должен быть таким:

введите сюда описание изображения

У меня возникает ошибка:

введите сюда описание изображения

Как ee исправить?


Ответы (1 шт):

Автор решения: splash58

Переверните словарь, и все станет просто

dictkeys = {y:x for x,y in cities.items()}
print(dictkeys)
# {1: 'Kyiv', 2: 'Zhytomyr', 3: 'Vinnitsa', 4: 'Poltava', 5: 'Chernihiv', 6: 'Lviv'}

dictkeys2 = [dictkeys.get(i) for i in arr ]
print("List of keys in Dictionary : ", dictkeys2)
# List of keys in Dictionary :  ['Zhytomyr', 'Poltava', 'Chernihiv', 'Lviv', 'Vinnitsa', 'Kyiv', 'Zhytomyr']   
→ Ссылка