안녕하세요!
지난 글에서 딕셔너리를 쭉 살펴보았습니다.
파이썬 딕셔너리(dictionary) 사용법: 딕셔너리 만들기, 딕셔너리 데이터 추가하기, value값 출력하기
이번 글에서는 리스트와 딕셔너리가 함께 사용되는
예제들을 살펴보겠습니다.
목차
1. 리스트의 값들을 딕셔너리로 출력하기
아래 코드를 살펴보면
좋아하는 화가 투표 리스트가 votes =[] 라는 리스트로 나타나 있습니다.
이 리스트에는 중복되는 화가들의 이름도 많이 보입니다.
이제 이 리스트를
후보별 득표수를 나타내는 딕셔너리로 새롭게 만들어보겠습니다.
counter = {}
라는 딕셔너리를 만들어주고
for반복문을 사용해 후보별 득표수를 딕셔너리로 만들어보겠습니다.
우선 for반복문에서는 votes라는 리스트안의 항목들을 쭉 돌면서
if(조건문)으로 내려가게 됩니다.
첫 번째 항목 '피카소'를 살펴보겠습니다.
만약 '피카소'가 counter 라는 딕셔너리에 없다면
counter['피카소'] = 1 으로 기록됩니다.
두 번째 항목인 마티스, 세번째 항목인 고흐도 마찬가지로 기록이 되었겠죠?
그 다음 네 번째 항목은 다시 '고흐' 입니다.
이제 counter라는 딕셔너리에는 '고흐'라는 항목이 key값으로 있습니다.
그렇기 때문에 조건문의 else로 내려가야겠죠.
else로 내려가보니 counter['고흐'] += 1 이라고 적혀있네요.
즉 value값에 1을 더하면 되는 겁니다.
이렇게 voter리스트 안의 항목을 쭉 반복문으로 돌면서
그 값들을 판별하다보면
화가의 이름과 득표수가 딕셔너리에 저장되게 됩니다.
#투표 결과 리스트
votes = ['피카소', '마티스', '고흐', '고흐', '고갱', '마티스', '마티스', '피카소', '고갱', '고흐', '마티스', '고갱']
#후보별 득표수 딕셔너리 새로 만들기
counter = {}
#리스트를 이용해 counter를 정리하기
#for반복문을 사용하여 후보별 득표수를 딕셔너리로 만들기
for name in votes:
if name not in counter:
counter[name] = 1
else:
counter[name] += 1
#후보별 득표수 출력
2. 딕셔너리 안에 딕셔너리
이번에는 딕셔너리 안에 딕셔너리가 있는 예제를 살펴보겠습니다.
태양계 딕셔너리를 살펴보겠습니다.
가장 큰 딕셔너리는
terrestrial_plane = {} 이라는 딕셔너리 입니다.
이 딕셔너리 안에는 작은 딕셔너리가 4개가 들어있죠.
Mercury, Venus, Earth, Mars 이렇게 4개의 딕셔너리가 각각 들어있습니다.
작은 딕셔너리를 살펴보면
mean_radius(반지름), mass(질량), orbital_period(종전주기)각 각각 key와 value로 들어가 있습니다.
그럼 이 딕셔너리에서 venus 딕셔너리의 mean_radius를 출력해볼까요?
이렇게 출력해주면 됩니다.
terrestrial_planet = {
'Mercury': {
'mean_radius': 2439.7,
'mass': 3.3022E+23,
'orbital_period': 87.969
},
'Venus': {
'mean_radius': 6051.8,
'mass': 4.8676E+24,
'orbital_period': 224.70069,
},
'Earth': {
'mean_radius': 6371.0,
'mass': 5.97219E+24,
'orbital_period': 365.25641,
},
'Mars': {
'mean_radius': 3389.5,
'mass': 6.4185E+23,
'orbital_period': 686.9600,
}
}
print(terrestrial_planet['Venus']['mean_radius']) # 6051.8
2. 태양계 행성의 반지름만 새로운 딕셔너리로 만들기
그럼
planet_mean_radius = {} 라는 새로운 딕셔너리를 만들어보겠습니다.
이 새로운 딕셔너리는
Mercury, Venus, Earth, Mars라는 각각의 행성의 반지름만 뽑아온 딕셔너리입니다.
이렇게 결과가 나오는 딕셔너리이죠.
이를 위한 코드를 살펴보겠습니다.
우선 planet_mean_radius = {} 라고 새로운 딕셔너리를 만들어 줍니다.
그리고
for반복문과 if 문으로 필요한 key와 value값을 뽑아오겠습니다.
일단 for반복문을 돌려서
전체 terrestrial_planet.keys() 를 쭉 살펴봅니다.
Mercury가 가장 먼저 살펴볼 name이 되겠죠?
이제 Mercury가 새로운 planet_mean_radius = {} 딕셔너리에 없다면
planet_mean_radius['Mercury'] 의 value 값을 찾아서 추가해주면 됩니다.
그 value 값은
terrestrial_planet['Mercury']['mean_radius']
가 되는 것이죠.
이런식으로 Mercury, Venus, Earth, Mars 4개의 key값을 반복문으로 살펴봅니다.
그럼 태양계 행성 4개의 이름이 key값으로 들어가고, 반지름이 value 값으로 들어간
새로운 딕셔너리가 만들어지게 됩니다.
#새로운 딕셔너리 만듦
planet_mean_radius = {}
#for반복문으로
for name in terrestrial_planet.keys():
if name not in planet_mean_radius:
planet_mean_radius[name] = terrestrial_planet[name]['mean_radius']
print('태양계 행성의 반지름: ')
print(planet_mean_radius)
3. 딕셔너리 안에 딕셔너리: 유럽 국가 여행 정보 딕셔너리
비슷한 예제를 하나 더 살펴보겠습니다.
바로 유럽 국가 딕셔너리에서
각 나라의 여행 포인트(travelpoint)를 딕셔너리로 출력하는 예제입니다.
이렇게 이탈리아, 프랑스, 스위스, 독일 4개의 나라가
작은 딕셔너리로 들어가 있는데, 각 나라의 travelpoint를 뽑아서 딕셔너리 형태로 출력해주는 것이죠.
전체 딕셔너리는
Europe = {} 이라는 딕셔너리입니다.
그 안에 작은 Italy, France, Swiss, Germany 라는 4개의 딕셔너리가 들어있습니다.
각 딕셔너리에는 수도, 기념품, 여행 포인트가 key와 value로 들어가 있습니다.
이제 여기서 각 나라의 이름을 key로, 여행 포인트를 value로 갖는
새로운 딕셔너리는 만들어줍니다.
그리고 for반복문을 통해
딕셔너리의 각 항목을 돌면서
travelpoint value값을 뽑아옵니다.
#유럽 국가 딕셔너리 만들고, 각 나라의 여행 포인트 출력하기
Europe = {
'Italy': {
'capital city': 'Rome',
'famous souvenir': 'coffechocolate',
'travelpoint': 'Fountain Trevi'
},
'France': {
'capital city': 'Paris',
'famous souvenir': 'macaron',
'travelpoint': '3course dinner',
},
'Swiss': {
'capital city': 'Bern',
'famous souvenir': 'cheese',
'travelpoint': 'Alps',
},
'Germany': {
'capital city': 'Berlin',
'famous souvenir': 'beer',
'travelpoint': '...?',
}
}
travelpoint = {}
for i in Europe:
if i not in travelpoint:
travelpoint[i] = Europe[i]['travelpoint']
print('유럽 각국의 여행 포인트: {}'.format(travelpoint))
출력 결과
아래와 같이 작동되는 것을 확인할 수 있습니다.
'프로그래밍 > 파이썬기초' 카테고리의 다른 글
파이썬 딕셔너리 - 리스트 안에 딕셔너리 예제(2) (3) | 2023.11.09 |
---|---|
파이썬 딕셔너리 - 리스트 안에 딕셔너리 예제 (0) | 2023.11.08 |
파이썬 딕셔너리(dictionary) 사용법: key값 출력하기, key와 value값 출력하기, key와 vlaue 값 뒤집기 (0) | 2023.11.06 |
파이썬 딕셔너리(dictionary) 사용법: 딕셔너리 만들기, 딕셔너리 데이터 추가하기, value값 출력하기 (2) | 2023.11.03 |
파이썬 기초 - 주민등록번호 뒷자리 지우기 함수 예제 (2) | 2023.10.17 |