Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 중복 키가 있는 딕셔너리 목록 병합하기

중복 키를 가진 딕셔너리 목록을 병합해야 할 때는 각 딕셔너리의 키들을 순회하면서, 특정 조건에 따라 값을 합치거나 유지하는 방식으로 결과를 만들 수 있습니다.

이 글에서는 두 개의 딕셔너리 리스트에서 같은 인덱스에 위치한 딕셔너리끼리 병합하되, 첫 번째 리스트의 딕셔너리에 이미 존재하는 키는 그대로 두고, 존재하지 않는 키만 두 번째 리스트에서 가져오는 방법을 살펴보겠습니다.

예제 코드

아래는 이를 구현한 예제입니다.

my_list_1 = [{"aba": 1, "best": 4}, {"python": 10, "fun": 15}, {"scala": "fun"}]

my_list_2 = [{"scala": 6}, {"python": 3, "best": 10}, {"java": 1}]

print("첫 번째 리스트 : ")
print(my_list_1)
print("두 번째 리스트 : ")
print(my_list_2)
for i in range(0, len(my_list_1)):

    id_keys = list(my_list_1[i].keys())
    for key in my_list_2[i]:

        if key not in id_keys:
            my_list_1[i][key] = my_list_2[i][key]

print("결과는 다음과 같습니다 : ")
print(my_list_1)

실행 결과

첫 번째 리스트 :
[{'aba': 1, 'best': 4}, {'python': 10, 'fun': 15}, {'scala': 'fun'}]
두 번째 리스트 :
[{'scala': 6}, {'python': 3, 'best': 10}, {'java': 1}]
결과는 다음과 같습니다 :
[{'aba': 1, 'best': 4, 'scala': 6}, {'python': 10, 'fun': 15, 'best': 10}, {'scala': 'fun', 'java': 1}]

코드 설명

  • 두 개의 딕셔너리 리스트를 정의하고 콘솔에 출력합니다.

  • 첫 번째 딕셔너리 리스트를 순회하면서 각 딕셔너리의 키들에 접근합니다.

  • 이 키들은 id_keys라는 변수에 리스트 형태로 저장됩니다.

  • 두 번째 딕셔너리 리스트를 순회하면서, 해당 키가 앞서 저장한 변수에 없다면 두 리스트의 해당 키와 값을 서로 연결(할당)하여 병합합니다.

  • 최종적으로 병합된 결과가 콘솔에 출력됩니다.

참고 사항

위 코드에서는 첫 번째 리스트의 기존 키 값이 우선권을 가집니다. 즉, 동일한 키가 양쪽에 존재하더라도 첫 번째 리스트의 값은 변경되지 않습니다. 만약 두 번째 리스트의 값으로 덮어쓰고 싶다면 if key not in id_keys: 조건을 제거하면 됩니다.