Смена мест ключей и значений в словаре
Есть словарь вида:
{'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)
- пройти по всем ключам,
- пройти по всем значениям для каждого ключа
- создать новые элементы для нового словаря
Автор решения: 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'}