Я использую два списка: files
и g_list
, которые были обычными списками. Я хотел удалить дубликаты с files
и получить g_list
матч. Я нашел это решение;Удалить дубликаты из вложенного списка, используя список в виде ключей
from collections import OrderedDict as odict
od = odict.fromkeys(zip(files, g_list))
files, g_list = zip(*od)
Я так модифицирована g_list
быть вложенный список, но теперь, когда я бегу выше код я получаю это TypeError
:
File "/usr/lib/python2.7/collections.py", line 199, in fromkeys
self[key] = value
File "/usr/lib/python2.7/collections.py", line 58, in __setitem__
if key not in self:
TypeError: unhashable type: 'list'
Как это исправить? Или есть другой способ сделать то, что я желаю?
Edit:
Вход:
files = ['red', 'green', 'blue', 'green', 'yellow']
g_list = [['x','y'], ['z'], ['q','r','x'], ['z'], ['x', 'r']]
Желаемая Выход:
files = ['red', 'green', 'blue', 'yellow']
g_list = [['x','y'], ['z'], ['q','r','x'], ['x', 'r']]
Вместо этого используйте 'tuple'. Может быть так же просто, как 'tuple (my_list)' – ZWiki
Возможный дубликат [TypeError: unhashable type: 'dict', когда dict используется как ключ для другого dict] (http://stackoverflow.com/questions/4531941/typeerror- unhashable-type-dict-when-dict-used-as-a-key-for-another-dict) – rll
Использование кортежа не удаляет дубликаты. 'Len (files)' до и после дает тот же результат. – p014k