본문 바로가기
프로그래밍/파이썬기초

파이썬 딕셔너리 - 리스트 안에 딕셔너리 예제

by 조크리 2023. 11. 8.
반응형

 

 

 

 

안녕하세요~!

지난 글에서는 딕셔너리와 리스트, 딕셔너리 안에 딕셔너리

등의 예제를 살펴보았습니다. 

 

파이썬 딕셔너리와 리스트 예제 : 리스트를 딕셔너리로, 딕셔너리 안에 딕셔너리

 

이번 글에서는

리스트 안에 딕셔너리 사용법을 살펴보겠습니다. 

 

 
 


목차

     

     

    1. 리스트 안에 딕셔너리

     

    처음 살펴볼 예제는 리스트 안에 딕셔너리 형태입니다. 

     

    서울시 미세먼지 API에서도

    가장 크게는 {} 딕셔너리가 있습니다. 

    RealtimeCityAir 라는 key값과 value값이 있고

    row라는 key 값과 value 값이 있습니다. 

     

    이 row의 value는 리스트로 이루어져 있는데요.

    리스트 안에는 또 딕셔너리가 있습니다. 

    각각의 딕셔너리는 서울시의 '구'의 정보들을 담고 있습니다. 

     

     

    좀 더 간단한 예제로 리스트 안에 딕셔너리의 형태를 살펴보죠!

     

     

    challenge = [] 라는 리스트가 있습니다. 

    이 리스트는 총 3개의 딕셔너리를 항목으로 가지고 있습니다. 

    각 항목에는 인덱싱, 즉 순서가 있죠?

     

    0번째 항목은 

    {'name': '재석''age': 10입니다. 

     

    1번째 항목은 

    {'name': '명수''age': 12 입니다. 

     

    2번째 항목은 

    {'name': '준하''age': 14 입니다. 

     

    이제 이 challenge = [] 라는 리스트를 출력시면각 항목이 순서대로 나올 겁니다. 

     

    그리고 리스트에서 0번째 항목을 뽑으면재석에 대한 딕셔너리가 나오겠죠?

     

    마지막으로 리스트의 0번째 항목의 'name' value값을 출력하면?재석이라는 이름이 나올겁니다. 

    challenge = [
        {'name': '재석',
         'age': 10},
        {'name': '명수',
         'age': 12},
        {'name': '준하',
         'age': 14}
    ]
    
    print(challenge)
    print(challenge[0])
    print(challenge[0]['name'])

     

     

    2. 리스트 안에 새로운 딕셔너리 추가하기

     

    그럼 challenge = [] 리스트 안에 새로운 딕셔너리를 하나 추가해보겠습니다. 

     

    아래 코드처럼 

    new_challenge = {} 라는 새로운 딕셔너리를 하나 만들어줍니다.

     

    그리고 리스트에 항목을 추가하는 append()라는 함수를 써서

    이 항목을 추가해줍니다. 

     

    그럼 홍철과 관련한 새로운 딕셔너리가 추가된 것을 확인할 수 있습니다. 

     

    새롭게 잘 항목이 들어갔는지 한 번 출력해보면

    홍철이라는 이름도 잘 확인이 될겁니다. 

    new_challenge = {'name': '홍철', 'age': 16}
    
    challenge.append(new_challenge)
    print(challenge)
    
    #리스트 안의 딕셔너리 값 확인
    print(challenge[3]['name'])

     

     

    3. 리스트 안의 딕셔너리에서 항목 찾기 

     

    어느정도 리스트 속에 있는 딕셔너리 예제를 익혔으니

    리스트 안의 딕셔너리에

    어떤 항목이 있는지 없는지 판별하고, 그 항목들을 불러오는 예제를 살펴보겠습니다. 

     

    우선 과일 이름과 좋아하는 학생 비율을 나타내는 리스트가 있습니다.

    이 리스트에는 각각의 과일과 그 과일을 좋아하는 학생 비율이 딕셔너리로 들어가 있죠. 

     

     

     

    이제 함수를 하나 만들어볼텐데요.

    get_name('과일이름', 리스트이름) 이라는 함수입니다.

    이 함수는 과일 이름과 리스트 이름을 적어주면

    그 과일을 좋아하는 학생의 비율을 출력해줍니다.

     

    만약 리스트에 없는 과일이라면

    항목에 없는 과일이름이라고 안내도 해줍니다.

     

     

     

    코드를 살펴보겠습니다. 

    우선 get_name(name, list) 라는 함수가 중요하겠죠!

     

    이 함수는 파라미터로 이름과 리스트를 받고 있습니다.

     

    우선 리스트의 항목을 for반복문으로 쭉 돌아줍니다.

    그리고 그 항목의 name값이 함수 호출시 적어준 값과 같다면

    항목의 %값을 불러옵니다. 

    만약 그 항목의 name값이 함수 호출 시 적어준 값과 다르다면

    항목에 없는 과일 이름이라고 리턴합니다. 

     

    get_name('바나나', fruit_list)를 예시로 보죠.

     

    우선 fruit_list리스트의 각각의 항목들을 for반복문으로 쭉 돌아줍니다.

    0번째 항목에서 name값은 '바나나'죠.

    사용자가 함수 호출시 적어준 값도 바나나입니다.

     

    이 둘이 같기 때문에

    0번째 항목의 % 값인 13을 불러옵니다.

    그리고 13%의 학생들이 좋아합니다. 라는 리턴값이 나오게 됩니다.

     

    배라는 과일은 이 리스트에 없기에

    항목에 없는 과일 이름입니다. 라는 문구가 리턴됩니다. 

    fruit_list = [
        {'name': '바나나', '%': 13},
        {'name': '딸기', '%': 20},
        {'name': '수박', '%': 30},
        {'name': '오렌지', '%': 35}
    ]
    
    #함수 만들기
    def get_name(name, list):
      for fruit in list:
        if fruit['name'] == name:
          return str(fruit['%']) + '%의 학생들이 좋아합니다.'
        return '항목에 없는 과일 이름입니다.'
    
    print(get_name('바나나', fruit_list))
    print(get_name('배', fruit_list))

     

     

    리스트와 딕셔너리가 함께 사용되는 예제들은

    꽤 난이도가 높기 때문에

    여러 번 코드를 작성해보고 다양한 예제를 실습해보는 것이 중요합니다. 

     

    다음 글에서도

    이와 비슷한 2개의 예제를 다시 실습해보겠습니다!

     

    반응형