본문 바로가기
공부/코딩

⛷ [파이썬] 파이썬 기초 정리 (14) : 딕셔너리 _ 3

by blackb1rd 2022. 11. 15.
728x90
반응형
728x170

 

 

 

파이썬 기초 정리

 

 

딕셔너리 순회하는 법

 

1) 키-값 쌍 순회하는 법 

다음 딕셔너리 예시는 사용자 이름과 실제 이름, 성을 저장합니다.

 

예시1) 

user_0 = {
    'username': 'emi',
    'first': 'emy',
    'last': 'trump',
}

 

위의 user_0에 관한 정보에 접근하기 위해서는 for 루프로 딕셔너리 순회를 하면 됩니다. 

예시2) 

user_0 = {
    'username': 'emi',
    'first': 'emy',
    'last': 'trump',
}

for key, value in user_0.items(): #1
    print(f"\nKey: {key}") #2
    print(f"Value: {value}") #3

 

결과 값

Key: username
Value: emi

Key: first
Value: emy

Key: last
Value: trump

 

#1에서는 딕셔너리를 순회할 for 루프에서 사용할 각 키-값 쌍의 키와 값을 저장할 변수 이름을 정했습니다. 이 두 변수의 이름은 원하는대로 정해도 됩니다. 다음과 같이 변수 이름과 약자만 써도 똑같이 작동합니다. 

for k,v in user_0.items():

 

#1에서 for문의 나머지 부분은 딕셔너리 이름 다음에 item() 메서드를 썼는데 이것의 기능은 키-값 쌍 리스트를 반환하는 것입니다. 반환이 되면 for 루프는 각 쌍을 주어진 변수에 할당하게 됩니다. 위의 예시2에서는 #2에서 각 키를 출력하고, #3에서 각 값을 출력합니다. #2의 "\n"은 각 키-값 쌍 사이에 다음과 같이 빈줄을 삽입하는 기능을 합니다. 

 

 

 

 

 

 

키-값 쌍 전체를 순회하는 방법은 예시3처럼 다양한 키에 비슷한 종류의 정보를 저장할 때 특히 유용합니다. 아래의 예시3의 변수는 name, flavor로도 바꿀 수 있습니다.

 

예시3) 

favorite_icecream_flavor = {
    'jenny': 'chocolate',
    'john': 'cream', 
    'sophia': 'chocolate',
    'mike': 'lemon',
    }

for n, f in favorite_icecream_flavor.items(): #1
    print(f"{n.title()}'s favorite ice cream flavor is {f.title()}.")

 

결과 값

Jenny's favorite ice cream flavor is Chocolate.
John's favorite ice cream flavor is Cream.
Sophia's favorite ice cream flavor is Chocolate.
Mike's favorite ice cream flavor is Lemon.

 

예시3에서 #1은 딕셔너리의 각 키-값 쌍을 순회하라는 명령입니다. 파이썬이 각 쌍을 순회하는 동안 키는 n변수에 값은l 변수에 각각 할당됩니다. 변수 이름 자체가 호출한 print() 문이 무슨 일을 하는지 힌트를 줍니다. 

 

 

 

2) key() 메서드를 사용하여 딕셔너리 키 순회하는 법

keys() 메서드는 딕셔너리의 값 전체가 필요하지 않을 때 사용하면 유용합니다.

 

예시4)

favorite_icecream_flavor = {
    'jenny': 'chocolate',
    'john': 'cream', 
    'sophia': 'chocolate',
    'mike': 'lemon',
    }

for name in favorite_icecream_flavor.keys(): #1
    print(name.title())

 

결과 값

Jenny
John
Sophia
Mike

 

 

딕셔너리 순회의 기본 동작은 키를 순회하는 것이기 때문에 밑의 예시5처럼 작성해도 같은 결과 값을 얻을 수 있습니다. 

예시5) 

favorite_icecream_flavor = {
    'jenny': 'chocolate',
    'john': 'cream', 
    'sophia': 'chocolate',
    'mike': 'lemon',
    }

for name in favorite_icecream_flavor:
    print(name.title())

 

 

 

반응형

 

 

 

- 사람 이름과 그 사람이 선택한 아이스트림 맛에 관한 메시지 출력하는 법

 

예시5) 

favorite_icecream_flavor = {
    'jenny': 'chocolate',
    'john': 'cream', 
    'sophia': 'chocolate',
    'mike': 'lemon',
    }

people = ['sophia', 'mike'] #1
for name in favorite_icecream_flavor.keys():
    print(f"Hi {name.title()}.")

    if name in people: #2
        flavor = favorite_icecream_flavor[name].title() #3
        print(f"\t{name.title()}, I see you love {flavor} flavor!")

 

결과 값

Hi Jenny.
Hi John.
Hi Sophia.
	Sophia, I see you love Chocolate flavor!
Hi Mike.
	Mike, I see you love Lemon flavor!

 

이름은 4명 모두 같이 출력되지만, sophia와 mike에게는 특별한 메시지가 추가로 함께 출력 됩니다. 

 

 

 

- key() 메서드로 특정인이 참여했는지 확인하는 법 

key() 메서드를 써서 특정인물이 참여했는지 여부도 알 수 있습니다. Harry가 참여했는지 아는 방법은 다음과 같습니다.

 

예시6) 

favorite_icecream_flavor = {
    'jenny': 'chocolate',
    'john': 'cream', 
    'sophia': 'chocolate',
    'mike': 'lemon',
    }

if 'harry' not in favorite_icecream_flavor.keys(): #1
    print ("Harry, please take one flavor!")

 

결과 값

Harry, please take one flavor!

 

keys() 메서드는 루프 뿐만 아니라 실제로 키 전체가 포함된 리스트를 반환하므로, #1처럼 특정인물이 리스트에 있는지도 확인할 수 있습니다. 

 

 

 

3) 정해진 순서로 딕셔너리 키 순회하는 법

파이썬은 딕셔너리를 순회할 때 3.7버전 부터 각 키-값 쌍이 정의/삽입된 순서를 지키게 되었습니다. 하지만 루프 순서를 바꾸고 싶을 때는 다음과 같이 할 수 있습니다. 바로 for 루프 사용하여 반환하는 키를 정렬(sort)하는 것 입니다. for루프에 sorted()함수를 써서 키를 알파벳 순서대로 정렬할 수 있습니다. 

 

예시7) 

favorite_icecream_flavor = {
    'jenny': 'chocolate',
    'john': 'cream', 
    'sophia': 'chocolate',
    'mike': 'lemon',
    }

for name in sorted(favorite_icecream_flavor.keys()):
    print(f"{name.title()}, enjoy your ice cream.")

 

결과 값

Jenny, enjoy your ice cream.
John, enjoy your ice cream.
Mike, enjoy your ice cream.
Sophia, enjoy your ice cream.

 

이 for문은 다른 for문과 마찬가지지만, dictonary.keys() 메서드를 sorted() 함수로 감쌌다는 점이 다릅니다. 이렇게 하면 파이썬이 딕셔너리의 키를 모두 알파벳 순으로 정렬한 다음 순회를 시작하게 됩니다.

 

 

 

728x90
반응형
그리드형

댓글