모든 BTS 멤버의 정보들을 표현하기 위해서는 어떻게 할 수 있을까?
이제까지 보았던 dictionary 구조로는 모든 멤버를 한번에 표현하기 어려워 보인다.
그래서 좀 더 복잡한 구조의 dictionary 형태를 보자.
먼저 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들을 읽어들이고 원하는 로직을 실행할 수 있다.
만일 특정한 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를 중첩적으로 사용하면 원하는 데이터를 더 효과적으로 표현하는 방법이 될 수 있다.