У меня есть проект преобразования одной базы данных в другую. Один из исходных столбцов базы данных определяет категорию строки. Этот столбец должен быть сопоставлен с новой категорией в новой базе данных.
Например, предположим, что исходными категориями являются:parrot, spam, cheese_shop, Cleese, Gilliam, Palin
Теперь это немного многословно для меня, и я хочу, чтобы эти строки были отнесены к категории sketch, actor
— то есть определить все эскизы и всех актеров как два класса эквивалентности.
>>> monty={'parrot':'sketch', 'spam':'sketch', 'cheese_shop':'sketch',
'Cleese':'actor', 'Gilliam':'actor', 'Palin':'actor'}
>>> monty
{'Gilliam': 'actor', 'Cleese': 'actor', 'parrot': 'sketch', 'spam': 'sketch',
'Palin': 'actor', 'cheese_shop': 'sketch'}
Это довольно неудобно - я бы предпочел иметь что-то вроде:
monty={ ('parrot','spam','cheese_shop'): 'sketch',
('Cleese', 'Gilliam', 'Palin') : 'actors'}
Но это, конечно, устанавливает весь кортеж как ключ:
>>> monty['parrot']
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
monty['parrot']
KeyError: 'parrot'
Есть идеи, как создать элегантный словарь «многие к одному» в Python?