Поскольку у вас есть список списков, вам необходимо сделать список неизменяемым типом, который будет использоваться в качестве ключа в питоне Python.
Вы можете сделать список значений кортежей:
>>> di={(2, '-', 3): [('Canada', 'Trudeau'),('Obama', 'USA')]}
>>> {tuple(v):k for k, v in di.items()}
{(('Canada', 'Trudeau'), ('Obama', 'USA')): (2, '-', 3)}
Или превратить их в строки:
>>> {repr(v):k for k, v in di.items()}
{"[('Canada', 'Trudeau'), ('Obama', 'USA')]": (2, '-', 3)}
С либо, вы можете повернуть ключ обратно в список, если это необходимо:
>>> from ast import literal_eval
>>> literal_eval("[('Canada', 'Trudeau'), ('Obama', 'USA')]")
[('Canada', 'Trudeau'), ('Obama', 'USA')]
>>> list((('Canada', 'Trudeau'), ('Obama', 'USA')))
[('Canada', 'Trudeau'), ('Obama', 'USA')]
(BTW: Не используйте eval
, если код, который может иметь какие-либо внешние строки, - используйте.в производстве код, как и в примере здесь)
Наконец, рассмотрим этот Dict:
di={'key 1':'val', 'key 2': 'val', 'key 3': 'val'}
При обратном ключи и значения, которые вы потеряете данные, так как каждый ключ добавляется «Вал».
Вы можете использовать Dict по умолчанию для решения повторяющихся значений становятся ключами:
dd=defaultdict(list)
for k, v in di.items():
dd[v].append(k)
>>> dd
defaultdict(<type 'list'>, {'val': ['key 1', 'key 2', 'key 3']})
* [Вы не можете использовать списки в качестве ключей, так как списки могут быть изменены на месте индексных назначений, срезу] (https://docs.python.org/ 2/tutorial/datastructures.html # словари) * –
Также следует предупредить, что va у вас есть дубликаты, если вы вворачиваете словарь, это может привести к потере данных. – vonPetrushev