안녕세계

[Python] List에서 dictionary 중복 제거 본문

[Python] List에서 dictionary 중복 제거

Junhong Kim 2018. 3. 26. 14:43
728x90
반응형

리스트에서 딕셔너리 중복 제거

파이썬 리스트에서 특정 속성 기준으로 중복되는 딕셔너리를 제거할 때 사용되는 Example 입니다.

다음과 같은 accounts 계정 목록이 있다고 가정해봅시다.

accounts = [ {'id': 1, 'username': 'Kim'}, {'id': 2, 'username': 'Lee'}, {'id': 3, 'username': 'Park'}, {'id': 3, 'username': 'Choi'}, ]

위 예제 코드에서 accounts 리스트에 username Park  Choi 인 사용자의 id가 같습니다.
이때, 우리는 id 3인 계정은 하나만 출력하고 싶을 때 다음과 같이 코드를 작성합니다.

accounts = [ {'id': 1, 'username': 'Kim'}, {'id': 2, 'username': 'Lee'}, {'id': 3, 'username': 'Park'}, {'id': 3, 'username': 'Choi'}, ] x = list({account['id']: account for account in accounts}.values()) print(x) # [{'id': 1, 'username': 'Kim'}, {'id': 2, 'username': 'Lee'}, {'id': 3, 'username': 'Choi'}]

위에서 보는 출력 결과에서 id 가 중복된 딕셔너리를 제외하고 출력되는 것을 확인할 수 있습니다.
다음과 같이 작성하면 accounts 리스트에 중복되는 username이 없기 때문에 모든 리스트를 출력합니다.

accounts = [ {'id': 1, 'username': 'Kim'}, {'id': 2, 'username': 'Lee'}, {'id': 3, 'username': 'Park'}, {'id': 3, 'username': 'Choi'}, ] x = list({account['username']: account for account in accounts}.values()) print(x) # [{'id': 1, 'username': 'Kim'}, {'id': 2, 'username': 'Lee'}, {'id': 3, 'username': 'Park'}, {'id': 3, 'username': 'Choi'}]

 

728x90
반응형
Comments