Смена мест ключей и значений в словаре

Есть словарь вида:

{'apple:': ['apple1,', 'apple2'],....}

Как мне поменять местами значения ключей и их значений? Чтобы получился такой:

{'apple1:': 'apple', 'apple2:': 'apple',...}

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

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

если в лоб, то так:

arr = {'apple:': ['apple1,', 'apple2'], 'banana': ['banana1', 'banana2', 'banana3']}

res = dict()

for obj in arr.items():
    for elem in obj[1]:
        res[elem] = obj[0]

print(res)
  1. пройти по всем ключам,
  2. пройти по всем значениям для каждого ключа
  3. создать новые элементы для нового словаря
→ Ссылка
Автор решения: Stanislav Volodarskiy

В Питоне есть dict comprehensions. Цикл по парам ключ/значение, вложенный цикл по значению:

import pprint

arr = {
    'apple:': ['apple1,', 'apple2'],
    'banana': ['banana1', 'banana2', 'banana3']
}

pprint.pprint({i: k for k, v in arr.items() for i in v})

Результат:

{'apple1,': 'apple:',
 'apple2': 'apple:',
 'banana1': 'banana',
 'banana2': 'banana',
 'banana3': 'banana'}
→ Ссылка