Python ตอนที่ 125 Dictionary ซ้อนกัน

ข้อมูลประเภท Dictionary สามารถเก็บข้อมูลได้ทุกประเภท รวมถึง Dictionary ด้วย นั่นคือเราสามารถเก็บข้อมูลประเภท Dictionary ซ้อนกันได้ เรียกว่า nested dictionaries

ตัวอย่าง

officer = {
    "firstname" : "Somchai",
    "lastname" : "Jaidee",
    "age" : 47,
    "tels": {
        "home": "08124561xx",
        "work": "0254789xx"
    }
}
print(officer)

{‘firstname’: ‘Somchai’, ‘lastname’: ‘Jaidee’, ‘age’: 47, ‘tels’: {‘home’: ‘08124561xx’, ‘work’: ‘0254789xx’}}

student1 = {
    "firstname" : "Somchai",
    "lastname" : "Jaidee",
    "age" : 15
}
student2 = {
    "firstname" : "Somying",
    "lastname" : "Yingruea",
    "age" : 15
}
student3 = {
    "firstname" : "Somjai",
    "lastname" : "Saimaya",
    "age" : 15
}
classroom = {
    "student1": student1,
    "student2": student2,
    "student3": student3
}
print(classroom)

{‘student1’: {‘firstname’: ‘Somchai’, ‘lastname’: ‘Jaidee’, ‘age’: 15}, ‘student2’: {‘firstname’: ‘Somying’, ‘lastname’: ‘Yingruea’, ‘age’: 15}, ‘student3’: {‘firstname’: ‘Somjai’, ‘lastname’: ‘Saimaya’, ‘age’: 15}}

การเข้าถึงสมาชิกใน Nested Dictionary

การเข้าถึงสมาชิกใน Nested Dictionary หรือดิกชันนารีซ้อนกัน สามารถทำได้โดยอ้างถึงชื่อของ Dictionary ชั้นนอกสุด และระบุชื่อ Dictionary ชั้นในและ Key ของ Dictionary นั้น โดยมีรูปแบบดังนี้

outer["inner"]["key"]
  • outer คือ Dictionary ชั้นนอก
  • inner คือ Dictionary ชั้นใน
  • key คือคีย์ของค่าที่ต้องการเข้าถึงของดิกชันนารีชั้นใน
student1 = {
    "firstname" : "Somchai",
    "lastname" : "Jaidee",
    "age" : 15
}
student2 = {
    "firstname" : "Somying",
    "lastname" : "Yingruea",
    "age" : 15
}
student3 = {
    "firstname" : "Somjai",
    "lastname" : "Saimaya",
    "age" : 15
}
students = {
    "student1": student1,
    "student2": student2,
    "student3": student3
}
std = students["student2"]["firstname"]
print(std)

Somying

ถ้ามี Dictionary ซ้อนกันหลายชั้น ก็ให้ระบุ Dictionary ชั้นนอกสุดแล้วก็ชั้นถัดไปตามลำดับจนถึงลำดับที่ต้องการ

student1 = {
    "firstname" : "Somchai",
    "lastname" : "Jaidee",
    "age" : 15,
    "tels": {
        "tel1": "xxxxx",
        "tel2": "yyyyy"
    }
}
student2 = {
    "firstname" : "Somying",
    "lastname" : "Yingruea",
    "age" : 15,
    "tels": {
        "tel1": "xxxxx",
        "tel2": "yyyyy"
    }
}
student3 = {
    "firstname" : "Somjai",
    "lastname" : "Saimaya",
    "age" : 15,
    "tels": {
        "tel1": "xxxxx",
        "tel2": "yyyyy"
    }
}
students = {
    "student1": student1,
    "student2": student2,
    "student3": student3,
    "tels": {
        "tel1": "xxxxx",
        "tel2": "yyyyy"
    }
}

print(students["student2"]["tels"])
print(students["student2"]["tels"]["tel1"])

ผลลัพธ์

{‘tel1’: ‘xxxxx’, ‘tel2’: ‘yyyyy’}
xxxxx