CodeGym /행동 /Python SELF KO /중첩된 딕셔너리

중첩된 딕셔너리

Python SELF KO
레벨 11 , 레슨 7
사용 가능

7.1 중첩된 딕셔너리 만들기

중첩된 딕셔너리는 복잡한 데이터 구조를 설명할 때 자주 사용할 수 있는 매우 유용한 방법이야. 이제 좀 더 연습해보자.

중첩된 딕셔너리 만들기

다음은 중첩된 딕셔너리를 만드는 예시야:


person = {
    "name": "Alice",
    "details": {
        "age": 25,
        "city": "New York",
        "address": {
            "street": "123 Main St",
            "zip": "10001"
        },
        "mother": "Jane Smith"
    },
    "gender": "female"
}
print(person)  # 출력: {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}, 'mother': 'Jane Smith'}, 'gender': 'female'}

이 예시에서 person은 중첩된 딕셔너리 details를 포함하고 있고, 그 안에 다른 중첩된 딕셔너리 address가 있어.

중첩된 딕셔너리는 조각을 모아 만들 수도 있어:


address = {
    "street": "123 Main St",
    "zip": "10001"
}
         
details = {
    "age": 25,
    "city": "New York",
    "address": address
}
         
person = {
    "name": "Alice",
    "details": details,
    "gender": "female"
}
print(person)  # 출력: {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}}, 'gender': 'female'}

7.2 중첩된 딕셔너리 요소에 접근하기

중첩된 딕셔너리 요소에 접근하는 건 간단하고 확실해. 이렇게 하는 거야:

최상위 요소에 접근하기


name = person["name"]
print(name)  # 출력: Alice

중첩된 딕셔너리 요소에 접근하기


age = person["details"]["age"]
city = person["details"]["city"]
print(age)  # 출력: 25
print(city)  # 출력: New York

더 깊은 중첩된 요소에 접근하기


street = person["details"]["address"]["street"]
zip_code = person["details"]["address"]["zip"]
print(street)  # 출력: 123 Main St
print(zip_code)  # 출력: 10001

7.3 중첩된 딕셔너리 요소 변경하기

만약 이미 어느 정도 중첩된 요소를 출력하는 법을 이해했다면, 그것들을 바꾸는 건 더 쉬울 거야:

최상위 값 변경하기


person["name"] = "Bob"
print(person["name"])  # 출력: Bob

중첩된 딕셔너리 값 변경하기


person["details"]["age"] = 26
print(person["details"]["age"])  # 출력: 26

더 깊은 중첩된 값 변경하기


person["details"]["address"]["city"] = "Los Angeles"
print(person["details"]["address"]["city"])  # 출력: Los Angeles

중첩된 딕셔너리에 새로운 요소 추가하기


person["details"]["phone"] = "123-456-7890"
print(person["details"]["phone"])  # 출력: 123-456-7890

최상위 요소 삭제하기


# 'country' 요소를 'person' 딕셔너리에서 삭제
del person["country"]
print(person)  # 'country' 요소는 딕셔너리에서 삭제될 거야

중첩된 딕셔너리에서 요소 삭제하기


# 'details' 딕셔너리에서 'phone' 요소 삭제
del person["details"]["phone"]
print(person["details"])  # 'phone' 요소는 'details' 딕셔너리에서 삭제될 거야

7.4 중첩된 딕셔너리 순회하기

딕셔너리의 모든 요소를 순회하는 몇 가지 방법이 있어. 루프는 그중 가장 간단한 거야:

중첩된 딕셔너리 요소 순회하기


for key, value in person.items():  # 부모 딕셔너리를 순회
    if isinstance(value, dict):  # 값이 딕셔너리라면
        for key2, value2 in value.items():  # 자식 딕셔너리 요소 순회
            print(f"{key} --> {key2}: {value2}")

모든 중첩 레벨을 재귀적으로 순회하기


def print_dict(d, indent=0):
    for key, value in d.items():
        print("  " * indent + str(key) + ": ", end="")
        if isinstance(value, dict):
            print()
            print_dict(value, indent + 1)
        else:
            print(value)
        
print_dict(person)

재귀에 대해선 '알고리즘과 데이터 구조' 주제에서 더 배울 거야.

참고로, 재귀는 중첩된 딕셔너리 깊은 곳에서 값을 찾을 때 유용해. 이런 예시가 있어:


def find_key(d, key):
    if key in d:
        return d[key]
    for k, v in d.items():
        if isinstance(v, dict):
            result = find_key(v, key)
            if result:
                return result
    return None
        
phone = find_key(person, "phone")
print(phone)  # 출력: None ('phone' 요소가 삭제되었기 때문이야)
1
Опрос
Git 작업,  11 уровень,  7 лекция
недоступен
Git 작업
Git 작업
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION