Python

[Python] 리스트 딕셔너리 중복 제거

학학이 2020. 2. 13. 17:41

python how to remove duplicate dict in list

https://stackoverflow.com/questions/11092511/python-list-of-unique-dictionaries

dict 전체 중복

# 순서가 보장되지 않음
list(map(dict, set(tuple(sorted(d.items())) for d in data)))

# 순서가 보장됨
list(map(dict, collections.OrderedDict.fromkeys(tuple(sorted(d.items())) for d in data)))
data = [
    {'id': 1, 'name': 'hak', 'age': 30},
    {'id': 2, 'name': 'woo', 'age': 31},
    {'id': 3, 'name': 'ho', 'age': 29},
    {'id': 1, 'name': 'hak', 'age': 30},
]

data1 = list(map(dict, set(tuple(sorted(d.items())) for d in data)))
data2 = list(map(dict, collections.OrderedDict.fromkeys(tuple(sorted(d.items())) for d in data)))

print(data1)
print(data2)

dict 특정 key 중복

list({v['id']:v for v in data}.values())
  • 이 방법은 특정 key에 대한 중복 제거기 때문에 사용하지 않는다.
  • 만약, 특정 key가 중복인 경우를 중복으로 바라본다면 이 방법을 사용한다.