콘텐츠로 건너뛰기

파이썬에서 딕셔너리를 반복하는 방법

CodeMDD.io

파이썬에서 딕셔너리 순회하기

딕셔너리 순회에 대한 견고한 지식은 더 나은, 더 견고한 코드를 작성하는 데 도움이 됩니다. 딕셔너리 순회를 통해 여러 예제를 작성하면서 딕셔너리를 순회하는 방법에 대해 자세히 알아보겠습니다.

파이썬 딕셔너리 시작하기

먼저, 딕셔너리의 기본 개념과 사용법을 알아보겠습니다.

딕셔너리 생성하기

딕셔너리는 중괄호 {}를 사용하여 생성됩니다. 각 쌍은 콜론(:)으로 키와 값으로 구분되며, 쉼표(,)로 여러 쌍을 구분합니다. 다음은 예시입니다:

my_dict = {"apple": 1, "banana": 2, "orange": 3}

딕셔너리 값 조회하기

딕셔너리 값은 대괄호 []를 사용하여 키를 인덱싱해서 조회할 수 있습니다. 다음은 예시입니다:

print(my_dict["apple"]) # 1

딕셔너리 값 수정하기

딕셔너리의 값은 대괄호 []를 사용하여 키를 인덱싱한 후에 할당 연산자(=)를 사용하여 수정할 수 있습니다. 다음은 예시입니다:

my_dict["apple"] = 5
print(my_dict["apple"]) # 5

딕셔너리의 쌍 추가하기

딕셔너리에 새로운 키-값 쌍을 추가하는 방법은 할당 연산자(=)를 사용하여 키를 인덱싱한 후에 값을 할당하는 것입니다. 다음은 예시입니다:

my_dict["grape"] = 4
print(my_dict["grape"]) # 4

파이썬에서 딕셔너리 순회하는 방법

이제 파이썬에서 딕셔너리를 순회하는 다양한 방법에 대해 알아보겠습니다. 예제 코드와 함께 단계별로 자세하게 설명하겠습니다.

딕셔너리 직접 순회하기

파이썬에서는 for 루프를 사용하여 딕셔너리를 직접 순회할 수 있습니다. for 루프의 반복 변수로 딕셔너리의 키를 사용하면 됩니다. 예제 코드를 확인해보세요:

for key in my_dict:
print(key, my_dict[key])

위의 코드는 딕셔너리의 모든 키와 값을 출력합니다.

.items() 메서드를 사용한 딕셔너리 아이템 순회하기

.items() 메서드를 사용하면 딕셔너리의 키-값 쌍으로 구성된 아이템을 순회할 수 있습니다. 예제 코드를 확인해보세요:

for key, value in my_dict.items():
print(key, value)

위의 코드는 딕셔너리의 모든 키와 값을 출력합니다.

.keys() 메서드를 사용한 딕셔너리 키 순회하기

.keys() 메서드를 사용하면 딕셔너리의 키를 순회할 수 있습니다. 예제 코드를 확인해보세요:

for key in my_dict.keys():
print(key)

위의 코드는 딕셔너리의 모든 키를 출력합니다.

.values() 메서드를 사용한 딕셔너리 값 순회하기

.values() 메서드를 사용하면 딕셔너리의 값들을 순회할 수 있습니다. 예제 코드를 확인해보세요:

for value in my_dict.values():
print(value)

위의 코드는 딕셔너리의 모든 값들을 출력합니다.

딕셔너리 순회 중 값 변경하기

딕셔너리를 순회하면서 값들을 변경하려면 for 루프 안에서 직접 값을 변경하면 됩니다. 예제 코드를 확인해보세요:

for key in my_dict:
my_dict[key] += 1

위의 코드는 딕셔너리의 모든 값들을 1씩 증가시킵니다.

딕셔너리 순회 중 안전하게 아이템 삭제하기

딕셔너리를 순회하면서 아이템을 삭제하려면 오류가 발생할 수 있습니다. 따라서 list(my_dict.keys())와 같이 딕셔너리의 키를 리스트로 변환한 뒤 순회하고, 필요한 경우 아이템을 삭제하는 것이 안전합니다. 예제 코드를 확인해보세요:

for key in list(my_dict.keys()):
if key.startswith("a"):
del my_dict[key]

위의 코드는 딕셔너리에서 이름이 “a”로 시작하는 모든 아이템을 삭제합니다.

for 루프 예제를 이용한 딕셔너리 순회

for 루프를 사용하여 딕셔너리를 순회하는 몇 가지 예제를 살펴보겠습니다.

값에 따라 아이템 필터링하기

여러 개의 아이템 중 특정 값에 따라 아이템을 필터링하려면 if 문을 사용하여 조건을 설정하면 됩니다. 예제 코드를 확인해보세요:

for key, value in my_dict.items():
if value > 2:
print(key, value)

위의 코드는 값이 2보다 큰 모든 아이템을 출력합니다.

키와 값으로 계산하기

딕셔너리의 키와 값으로 계산을 수행하려면 for 루프를 사용하여 키와 값을 출력한 뒤, 연산을 수행하면 됩니다. 예제 코드를 확인해보세요:

total = 0
for key, value in my_dict.items():
total += len(key) * value
print(total)

위의 코드는 딕셔너리의 키의 길이와 값의 곱을 계산하여 총합을 출력합니다.

키와 값을 교환하기

이전 예제에서 키와 값을 교환하려면 임시 변수를 사용해야 했습니다. 그러나 for 루프를 사용하여 딕셔너리를 순회하면서 값을 키로, 키를 값으로 설정하여 교환할 수도 있습니다. 예제 코드를 확인해보세요:

new_dict = {}
for key, value in my_dict.items():
new_dict[value] = key
print(new_dict)

위의 코드는 딕셔너리의 키와 값을 교환한 새로운 딕셔너리를 생성합니다.

내포를 사용한 딕셔너리 순회 예제

리스트 내포와 마찬가지로 딕셔너리 내포를 사용하여 딕셔너리를 순회할 수도 있습니다. 예제 코드를 확인해보세요:

filtered_dict = {key: value for key, value in my_dict.items() if value > 2}
print(filtered_dict)

위의 코드는 값이 2보다 큰 아이템만 필터링하여 새로운 딕셔너리를 생성합니다.

정렬된 순서로 딕셔너리 순회하기

딕셔너리를 정렬된 순서로 순회해야 하는 경우에는 sorted() 함수를 사용하여 딕셔너리의 키를 정렬하거나, .items() 메서드 대신 .sorted() 메서드를 사용하여 아이템을 순회할 수도 있습니다. 예제 코드를 확인해보세요:

# 키를 기준으로 정렬된 순서로 딕셔너리 순회
for key in sorted(my_dict.keys()):
print(key, my_dict[key])
# 값에 따라 정렬된 순서로 딕셔너리 순회
for key, value in sorted(my_dict.items(), key=lambda item: item[1]):
print(key, value)

위의 코드는 딕셔너리를 키 또는 값에 따라 정렬된 순서로 순회합니다.

.popitem() 메서드를 사용한 딕셔너리 순회

.popitem() 메서드를 사용하면 딕셔너리를 순회하면서 아이템을 삭제하면서 순회할 수 있습니다. 예제 코드를 확인해보세요:

while my_dict:
key, value = my_dict.popitem()
print(key, value)

위의 코드는 딕셔너리의 모든 아이템을 순회하면서 삭제합니다.

내장 함수를 사용한 딕셔너리 암묵적 순회

딕셔너리를 순회할 때에는 내장 함수인 map()filter()를 사용하여 자동으로 순회할 수도 있습니다. 예제 코드를 확인해보세요:

map() 함수를 사용하여 딕셔너리의 아이템 변환하기

map() 함수를 사용하면 딕셔너리의 각 아이템을 다른 값으로 변환할 수 있습니다. 예제 코드를 확인해보세요:

new_dict = dict(map(lambda item: (item[0], item[1] * 2), my_dict.items()))
print(new_dict)

위의 코드는 딕셔너리의 값을 2배로 변환하여 새로운 딕셔너리를 생성합니다.

filter() 함수를 사용하여 딕셔너리의 아이템 필터링하기

filter() 함수를 사용하면 딕셔너리의 각 아이템을 필터링할 수 있습니다. 예제 코드를 확인해보세요:

filtered_dict = dict(filter(lambda item: item[1] > 2, my_dict.items()))
print(filtered_dict)

위의 코드는 값이 2보다 큰 아이템만 필터링하여 새로운 딕셔너리를 생성합니다.

여러 개의 딕셔너리를 하나로 순회하기

ChainMapchain()을 사용하면 여러 개의 딕셔너리를 하나로 순회할 수도 있습니다. 예제 코드를 확인해보세요:

ChainMap을 사용하여 여러 딕셔너리 순회하기

ChainMap을 사용하면 여러 개의 딕셔너리를 하나로 순회할 수 있습니다. 예제 코드를 확인해보세요:

from collections import ChainMap
dict1 = {"apple": 1, "banana": 2}
dict2 = {"orange": 3, "grape": 4}
combined_dict = dict(ChainMap(dict1, dict2))
for key, value in combined_dict.items():
print(key, value)

위의 코드는 두 개의 딕셔너리를 하나의 딕셔너리로 합치고, 합쳐진 딕셔너리를 순회합니다.

chain() 함수를 사용하여 여러 개의 딕셔너리 순회하기

chain() 함수를 사용하면 여러 개의 딕셔너리를 하나로 순회할 수 있습니다. 예제 코드를 확인해보세요:

from itertools import chain
dict1 = {"apple": 1, "banana": 2}
dict2 = {"orange": 3, "grape": 4}
for key, value in chain(dict1.items(), dict2.items()):
print(key, value)

위의 코드는 두 개의 딕셔너리를 순회하는 것과 같은 결과를 출력합니다.

병합된 딕셔너리를 순회하기: ** 연산자 활용

두 개 이상의 딕셔너리를 병합한 뒤, 하나로 순회하려면 ** 연산자를 사용하여 병합한 딕셔너리를 생성합니다. 예제 코드를 확인해보세요:

dict1 = {"apple": 1, "banana": 2}
dict2 = {"orange": 3, "grape": 4}
dict3 = {"melon": 5, "kiwi": 6}
combined_dict = {**dict1, **dict2, **dict3}
for key, value in combined_dict.items():
print(key, value)

위의 코드는 세 개의 딕셔너리를 병합한 뒤, 병합된 딕셔너리를 순회합니다.

결론

이 튜토리얼에서는 파이썬에서 딕셔너리를 순회하는 방법에 대해 자세히 알아보았습니다. 더 나은 코드를 작성하고 더 많은 문제를 해결하기 위해 딕셔너리 순회에 대한 실제 예제들을 살펴보았습니다. 딕셔너리 순회에 관한 지식은 파이썬 프로그래밍에서 중요한 부분이므로, 실무에서 유용하게 활용할 수 있습니다. 딕셔너리 순회에 대한 이해를 바탕으로 여러분의 파이썬 프로그래밍 실력을 향상시키길 바랍니다.