TIL[47]. Python_ Complex Dictionary

jake.log·2020년 8월 23일
0

Python

목록 보기
29/39

29.Complex Dictionary

모든 BTS 멤버의 정보들을 표현하기 위해서는 어떻게 할 수 있을까?
이제까지 보았던 dictionary 구조로는 모든 멤버를 한번에 표현하기 어려워 보인다.

그래서 좀 더 복잡한 구조의 dictionary 형태를 보자.

1.List of Dictionaries

먼저 BTS 모든 멤버 7명을 다 표현하기 위해서는 각 멤버를 dictionary로 표현한 후 list로 같이 합하여 줌으로써 BTS의 모든 멤버를 표현 할 수 있다.

bts = [
{
"실명" : "김남준",
"가명" : "RM",
"생년월일" : "1994년 9월 12일",
"출생지" : "대한민국 서울특별시 동작구 상도동",
"학력" : "글로벌사이버대학교 방송연예학과",
"포지션" : "리더 · 메인 래퍼"
},
{
"실명" : "김석진",
"가명" : "진",
"생년월일" : "1992년 12월 4일",
"출생지" : "대한민국 경기도 과천시",
"학력" : "한양사이버대학교 대학원",
"포지션" : "서브 보컬"
},
{
"실명" : "민윤기",
"가명" : "슈가",
"생년월일" : "1993년 3월 9일",
"출생지" : "대한민국 대구광역시 북구 태전동",
"학력" : "글로벌사이버대학교 방송연예학과",
"포지션" : "리드 래퍼"
},
{
"실명" : "정호석",
"가명" : "제이홉",
"생년월일" : "1994년 2월 18일",
"출생지" : "대한민국 광주광역시 북구 일곡동",
"학력" : "글로벌사이버대학교 방송연예학과",
"포지션" : "서브 래퍼 · 메인 댄서"
},
{
"실명" : "박지민",
"가명" : "지민",
"생년월일" : "1995년 10월 13일",
"출생지" : "대한민국 부산광역시 금정구 금사동",
"학력" : "글로벌사이버대학교 방송연예학과",
"포지션" : "리드 보컬 · 메인 댄서"
},
{
"실명" : "김태형",
"가명" : "뷔",
"생년월일" : "1995년 12월 30일",
"출생지" : "대한민국 대구광역시 서구 비산동",
"학력" : "글로벌사이버대학교 방송연예학과",
"포지션" : "서브 보컬"
},
{
"실명" : "전정국",
"가명" : "정국",
"생년월일" : "1997년 9월 1일",
"출생지" : "대한민국 부산광역시 북구 만덕동",
"학력" : "글로벌사이버대학교 방송연예학과",
"포지션" : "메인 보컬 · 서브 래퍼 · 리드 댄서"
}
]

이렇게 list를 dictionary로 구성하면 손쉽게 여러 dictionary들을 grouping 할 수 있다.

그리고 for 구문을 사용하여 각각의 dictionary들을 읽어들이고 원하는 로직을 실행할 수 있다.

2.Nested Dictionary

만일 특정한 BTS 멤버의 정보를 읽고 싶다면
앞서 본 list of dictionaries의 경우 for 구문을 통해서 모든 요소를 하나 하나 확인해 봐야 합니다. 예를 들어, 제이홉의 생년월일을 알고 싶다면 다음 처럼 구현해야 합니다.

for member in bts:
if member["가명"] == "제이홉":
print(member["생년월일"])

만일 list의 총 길이가 훨씬 더 길었다면 실행하는데 걸리는 시간이 길어질 것 입니다.

원하는 정보를 한번에 찾을 수 있다면 훨씬 더 편하고 효율적일 것입니다.
그래서 이 경우에는 nested dictionary를 사용할 수 있습니다.

bts = {
	"RM": {
		"실명" : "김남준",
		"가명" : "RM",
		"생년월일" : "1994년 9월 12일",
		"출생지" : "대한민국 서울특별시 동작구 상도동",
		"학력" : "글로벌사이버대학교 방송연예학과",
		"포지션" : "리더 · 메인 래퍼"
	},
	"진": {
		"실명" : "김석진",
		"가명" : "진",
		"생년월일" : "1992년 12월 4일",
		"출생지" : "대한민국 경기도 과천시",
		"학력" : "한양사이버대학교 대학원",
		"포지션" : "서브 보컬"
	},
	"슈가": {
		"실명" : "민윤기",
		"가명" : "슈가",
		"생년월일" : "1993년 3월 9일",
		"출생지" : "대한민국 대구광역시 북구 태전동",
		"학력" : "글로벌사이버대학교 방송연예학과",
		"포지션" : "리드 래퍼"
	},
	"제이홉": {
		"실명" : "정호석",
		"가명" : "제이홉",
		"생년월일" : "1994년 2월 18일",
		"출생지" : "대한민국 광주광역시 북구 일곡동",
		"학력" : "글로벌사이버대학교 방송연예학과",
		"포지션" : "서브 래퍼 · 메인 댄서"
	},
	"지민": {
		"실명" : "박지민",
		"가명" : "지민",
		"생년월일" : "1995년 10월 13일",
		"출생지" : "대한민국 부산광역시 금정구 금사동",
		"학력" : "글로벌사이버대학교 방송연예학과",
		"포지션" : "리드 보컬 · 메인 댄서"
	},
	"뷔": {
		"실명" : "김태형",
		"가명" : "뷔",
		"생년월일" : "1995년 12월 30일",
		"출생지" : "대한민국 대구광역시 서구 비산동",
		"학력" : "글로벌사이버대학교 방송연예학과",
		"포지션" : "서브 보컬"
	},
	"정국": {
		"실명" : "전정국",
		"가명" : "정국",
		"생년월일" : "1997년 9월 1일",
		"출생지" : "대한민국 부산광역시 북구 만덕동",
		"학력" : "글로벌사이버대학교 방송연예학과",
		"포지션" : "메인 보컬 · 서브 래퍼 · 리드 댄서"
	}
}

print(bts["제이홉"]["생년월일"])

이렇게 dictionary 안에 dictionary를 중첩적으로 사용하면 원하는 데이터를 더 효과적으로 표현하는 방법이 될 수 있다.

profile
꾸준히!

0개의 댓글