나는이 같은 사전을 중첩 포함 사전의 목록을 가지고 : 나는 순서에 대해 걱정하지 않는다Python의 목록에서 중첩 된 dicts와 중복 된 dicts를 제거하려면 어떻게합니까?
v1 = [ { 'a': 1, 'b': { 'c': 3 } },
{ 'a': 1, 'b': { 'c': 3 }, 'd': 4 },
{ 'a': 1 } ]
:
v0 = [ { 'a': 1, 'b': { 'c': 3 } },
{ 'a': 1, 'b': { 'c': 3 }, 'd': 4 },
{ 'a': 1 },
{ 'a': 1, 'b': { 'c': 3 } } ]
가 어떻게 같은 결과 중복 목록 요소를 제거 할 수 있습니다 , 나는 모든 요소 집합을 원한다. 비슷한 질문을 여러 번 보았지만 대답은 중첩 된 사전이 아닌 목록에있는 간단한 사전에서만 작동합니다. 예를 들어 :
v1 = [dict(t) for t in set([tuple(d.items()) for d in v0])]
사전의 중첩되지 않은 경우이 작동 것이다, 그러나 때문에, 나는 오류 "형식 오류 : unhashable 유형 : 'DICT'"수
같은보다 효율적인 솔루션 동안 O (n)을 달성 할 수있다. – univerio
나는 이것을 사용하는 것을 끝내었다. 다행히도 필자의리스트는 퍼펙트 히트가 중요하지 않을만큼 작으며, 나는 이것을 매우 가독성이 있다고 본다. –
@univerio :이 방법은 O (n^2) 솔루션입니까? 'for v in v0'은 O (n)이고'v not in out '은 O (1)입니다. –