Вы можете просто добавить dict
к своему уникальному list
, если он еще не содержится в нем (обратите внимание, что я предполагаю, что вы имели в виду, чтобы третий элемент имел 'E'
в его списке deck
, иначе это не было бы дубликатом):
x = [
{'101': ['A','B'],
'102': ['C'],
'103': ['D'],
'104': [],
'105': [],
'deck': ['E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']},
{'101': ['A'],
'102': ['C'],
'103': ['B'],
'104': ['D'],
'105': ['E'],
'deck': ['E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']},
{'101': ['A','B'],
'102': ['C'],
'103': ['D'],
'104': [],
'105': [],
'deck': ['E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']}
]
unique_solutions = []
for d in x:
if d not in unique_solutions:
unique_solutions.append(d)
Или вы могли бы создать что-то вроде класса HashDict
, который реализует хеши (в моем примере, используя кортежи, но это можно сделать по-разному ) и создайте set
:
class HashDict(dict):
def __init__(self, d):
for k, v in d.items():
self[k] = v
def __hash__(self):
return hash(tuple((k, tuple(v)) for k, v in self.items()))
hdx = [HashDict(d) for d in x]
unique_solutions = list(set(hdx))
Оба примера приводят к
>>> print(unique_solutions)
[{'101': ['A', 'B'], '102': ['C'], '103': ['D'], '104': [], '105': [], 'deck': ['E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']}, {'101': ['A'], '102': ['C'], '103': ['B'], '104': ['D'], '105': ['E'], 'deck': ['E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']}]