콘텐츠로 건너뛰기

파이썬 dict 반복하는 방법

[

파이썬에서 사전(Dict)을 반복하는 방법

사전 반복에 대한 탄탄한 지식은 더 좋고 더 견고한 코드를 작성하는 데 도움이 될 것입니다. 사전 반복을 통해 여러 예제를 작성하면서 실제로 실행 가능한 코드와 함께 자세한 설명을 제공하겠습니다. 아래의 내용을 참고하여 따라해보세요.

1. 파이썬 사전(dict)으로 시작하기

사전(Dict)을 생성하는 방법은 다음과 같습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}

이제 우리는 person 사전을 반복하고자 합니다.

2. 사전 직접 반복하기

가장 간단한 방법 중 하나는 사전의 키를 직접 반복하는 것입니다. 이 경우에는 for 문과 in 예약어를 사용합니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
for key in person:
print(key)

결과적으로 다음과 같이 키를 출력할 것입니다.

name
age
city

3. 사전 아이템(iteritems)을 반복하기

사전의 값을 함께 사용하려면 사전의 items() 메서드를 사용하여 사전 아이템을 반복할 수 있습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
for key, value in person.items():
print(key, value)

결과적으로 다음과 같이 키와 값이 출력됩니다.

name John
age 30
city New York

4. 사전 키만 사용하여 반복하기

값이 아닌 사전의 키만을 반복하려면 keys() 메서드를 사용하여 반복할 수 있습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
for key in person.keys():
print(key)

결과적으로 다음과 같이 키가 출력됩니다.

name
age
city

5. 사전 값만 반복하기

사전의 값만 사용하려면 values() 메서드를 사용하여 반복할 수 있습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
for value in person.values():
print(value)

결과적으로 다음과 같이 값이 출력됩니다.

John
30
New York

6. 반복 중 사전 값 변경하기

반복 중에 사전의 값을 변경해야 하는 경우에는 먼저 사전의 키 목록을 별도로 저장한 다음, 이 키 목록을 사용하여 값을 변경해야 합니다. 그렇지 않으면 런타임 에러가 발생할 수 있습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
keys = list(person.keys())
for key in keys:
person[key] = person[key] + " Doe"
print(person)

이제 모든 값에 “Doe”를 추가한 결과를 출력합니다.

{'name': 'John Doe', 'age': '30 Doe', 'city': 'New York Doe'}

7. 반복 중 안전하게 사전 항목 삭제하기

반복 중에 사전에서 항목을 삭제해야 하는 경우에는 dict.copy() 메서드를 사용하여 사전의 복사본을 만들고, 복사본을 반복하는 것이 좋습니다. 이렇게 하면 원본 사전을 변경하지 않아도 됩니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
keys = list(person.keys())
for key in keys:
if key == "age":
del person[key]
print(person)

결과적으로 다음 값들이 제거되어 출력됩니다.

{'name': 'John', 'city': 'New York'}

8. 사전 반복: for 루프 예제

이제 사전을 반복하는 몇 가지 예제를 살펴보겠습니다.

8.1. 값에 따라 항목 필터링하기

person = {
"name": "John",
"age": 30,
"city": "New York"
}
for key, value in person.items():
if value == "John":
print(key, value)

결과적으로 “John” 값에 해당하는 키와 값이 출력됩니다.

name John

8.2. 키와 값으로 계산하기

prices = {
"apple": 0.5,
"banana": 0.25,
"orange": 0.75
}
total = 0
for item, price in prices.items():
total += price
print(total)

결과적으로 모든 가격을 합산한 총 가격이 출력됩니다.

1.5

8.3. 키와 값 교환하기

person = {
"name": "John",
"age": 30,
"city": "New York"
}
swapped_person = {value: key for key, value in person.items()}
print(swapped_person)

결과적으로 키와 값이 서로 교환된 사전이 출력됩니다.

{'John': 'name', 30: 'age', 'New York': 'city'}

9. 사전 반복: 컴프리헨션 예제

사전 반복에는 컴프리헨션을 사용하여 간결한 코드를 작성할 수도 있습니다.

9.1. 값에 따라 항목 필터링하기: 재방문

person = {
"name": "John",
"age": 30,
"city": "New York"
}
filtered_person = {key: value for key, value in person.items() if value == "John"}
print(filtered_person)

결과적으로 “John” 값에 해당하는 키와 값으로 구성된 사전이 출력됩니다.

{'name': 'John'}

9.2. 키와 값 교환하기: 재방문

person = {
"name": "John",
"age": 30,
"city": "New York"
}
swapped_person = {value: key for key, value in person.items()}
print(swapped_person)

결과적으로 키와 값이 서로 교환된 사전이 출력됩니다.

{'John': 'name', 30: 'age', 'New York': 'city'}

10. 정렬된 순서로 사전 반복하기

정렬된 순서로 사전을 순회하는 방법을 알아보겠습니다.

10.1. 정렬된 키 순회하기

person = {
"name": "John",
"age": 30,
"city": "New York"
}
sorted_keys = sorted(person.keys())
for key in sorted_keys:
print(key)

결과적으로 정렬된 키가 출력됩니다.

age
city
name

10.2. 정렬된 값 순회하기

person = {
"name": "John",
"age": 30,
"city": "New York"
}
sorted_values = sorted(person.values())
for value in sorted_values:
print(value)

결과적으로 정렬된 값이 출력됩니다.

30
John
New York

10.3. 컴프리헨션을 사용해 사전 정렬하기

person = {
"name": "John",
"age": 30,
"city": "New York"
}
sorted_person = {key: value for key, value in sorted(person.items())}
print(sorted_person)

결과적으로 키를 기준으로 정렬된 사전이 출력됩니다.

{'age': 30, 'city': 'New York', 'name': 'John'}

10.4. 역순으로 정렬된 순서로 사전 반복하기

person = {
"name": "John",
"age": 30,
"city": "New York"
}
reversed_keys = reversed(person.keys())
for key in reversed_keys:
print(key)

결과적으로 역순으로 정렬된 키가 출력됩니다.

city
age
name

11. .popitem() 메서드를 사용하여 사전 속성 삭제하기

.popitem() 메서드를 사용하여 사전의 항목을 삭제할 수 있습니다. 이 메서드는 항목이 삭제되는 동시에 항목의 키와 값을 반환합니다. 하지만, 이 메서드로 반복을 수행할 때 올바른 키와 값을 보장할 수 없습니다. 대신에 이 메서드는 사전에 무작위로 접근하여 한 항목을 삭제합니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
while person:
key, value = person.popitem()
print(key, value)

결과적으로 무작위로 키와 값을 출력합니다.

city New York
age 30
name John

12. 내장 함수를 사용하여 사전 반복하기

사전 반복을 보다 간단하게 수행할 수 있는 내장 함수도 있습니다.

12.1. 사전의 항목을 변환하기: map()

map() 함수를 사용하여 사전의 항목을 변환할 수 있습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
uppercase_person = {key: value.upper() for key, value in map(lambda item: (item[0], item[1]), person.items())}
print(uppercase_person)

결과적으로 키와 값이 모두 대문자로 변환되어 출력됩니다.

{'name': 'JOHN', 'age': '30', 'city': 'NEW YORK'}

12.2. 사전의 항목을 필터링하기: filter()

filter() 함수를 사용하여 사전의 항목을 필터링할 수 있습니다.

person = {
"name": "John",
"age": 30,
"city": "New York"
}
filtered_person = {key: value for key, value in filter(lambda item: item[1] == "John", person.items())}
print(filtered_person)

결과적으로 “John” 값에 해당하는 키와 값으로 구성된 사전이 출력됩니다.

{'name': 'John'}

13. 하나로 합쳐진 여러 사전 반복하기

여러 개의 사전을 하나로 합치고, 합쳐진 사전을 반복할 수도 있습니다.

13.1. ChainMap을 사용하여 여러 사전 반복하기

ChainMap 클래스를 사용하여 여러 개의 사전을 하나로 합쳐서 반복할 수 있습니다.

from collections import ChainMap
person_1 = {
"name": "John",
"age": 30,
}
person_2 = {
"city": "New York",
}
chained_persons = ChainMap(person_1, person_2)
for key, value in chained_persons.items():
print(key, value)

결과적으로 모든 사전의 키와 값이 출력됩니다.

name John
age 30
city New York

13.2. chain() 함수를 사용하여 사전 체인 반복하기

chain() 함수를 사용하여 사전을 체인으로 연결하여 반복할 수도 있습니다.

from itertools import chain
person_1 = {
"name": "John",
"age": 30,
}
person_2 = {
"city": "New York",
}
chained_persons = chain(person_1.items(), person_2.items())
for key, value in chained_persons:
print(key, value)

결과적으로 모든 사전의 키와 값이 출력됩니다.

name John
age 30
city New York

14. 합쳐진 사전 반복: ** 연산자 사용하기

** 연산자를 사용하여 합쳐진 사전을 반복할 수도 있습니다.

person_1 = {
"name": "John",
"age": 30,
}
person_2 = {
"city": "New York",
}
chained_persons = {**person_1, **person_2}
for key, value in chained_persons.items():
print(key, value)

결과적으로 모든 사전의 키와 값이 출력됩니다.

name John
age 30
city New York

15. 핵심 내용

  • 파이썬에서 사전(Dict)을 반복하는 방법에 대해 자세히 살펴보았습니다.
  • 사전의 키, 값, 아이템을 직접 반복하거나 .keys(), .values(), .items() 메서드를 사용하여 반복할 수 있습니다.
  • 반복 중에 사전의 값을 변경하거나 삭제해야 할 경우에는 주의해야 합니다. 반복 중에 사전 항목을 안전하게 삭제하려면 .keys() 메서드를 사용하여 키 목록을 별도로 생성한 다음, 해당 키 목록을 사용하여 값을 변경하거나 항목을 삭제해야 합니다.
  • 컴프리헨션을 사용하여 간결하게 사전을 반복할 수 있습니다.
  • 정렬된 순서 또는 역순으로 사전을 반복하려면 sorted() 함수 또는 reversed() 함수를 사용합니다.
  • .popitem() 메서드를 사용하여 사전의 항목을 삭제할 수 있습니다. 이 경우, 항목의 키와 값을 반환합니다.
  • 내장 함수인 map()filter()를 사용하여 사전 반복을 보다 효율적으로 처리할 수 있습니다.
  • 여러 개의 사전을 체인 또는 합쳐진 사전으로 반복하려면 ChainMap 클래스 또는 chain() 함수를 사용할 수 있습니다.
  • 합쳐진 사전을 만들 때는 ** 연산자를 사용할 수 있습니다.

이 튜토리얼을 통해 파이썬에서 사전을 반복하는 방법을 자세히 알아보았습니다. 이제 사전을 효과적으로 반복하여 프로그래밍에 활용할 수 있을 것입니다.