พจนานุกรม Python ที่ซ้อนกันคือพจนานุกรมภายในพจนานุกรมอื่น ซึ่งช่วยให้คุณจัดเก็บข้อมูลโดยใช้โครงสร้างการแมปคีย์-ค่าภายในพจนานุกรมที่มีอยู่
เมื่อคุณทำงานกับพจนานุกรมในภาษา Python คุณอาจพบกับสถานการณ์ที่พจนานุกรมมีพจนานุกรมอื่นอยู่
โครงสร้างข้อมูลนี้มักถูกเรียกว่า พจนานุกรมที่ซ้อนกัน และมีกรณีการใช้งานที่เป็นไปได้มากมายในโค้ด Python
บทช่วยสอนนี้จะกล่าวถึงพื้นฐานของพจนานุกรม Python ที่ซ้อนกัน เราจะอธิบายตัวอย่างบางส่วนเพื่อให้คุณได้เรียนรู้วิธีสร้างและแก้ไขพจนานุกรมที่ซ้อนกัน
ทบทวนพจนานุกรมหลาม
พจนานุกรมเป็นประเภทข้อมูลการแมปของ Python พจนานุกรม Python ผูก—หรือ แผนที่ —กุญแจสู่ค่าและจัดเตรียมวิธีการจัดเก็บข้อมูลอย่างมีประสิทธิภาพ
เมื่อคีย์ถูกจับคู่กับค่า คุณสามารถดึงข้อมูลที่เก็บไว้ในค่านั้นโดยอ้างอิงคีย์ ในแง่หนึ่ง คีย์ทำหน้าที่เหมือนป้ายกำกับ ต่อไปนี้คือตัวอย่างพจนานุกรมที่เก็บราคารสชาติไอศกรีมที่ขายในร้านไอศกรีม The Frozen Spoon
ice_cream_flavors ={ "Vanilla":0.50, "Chocolate":0.50, "Cookies and Cream":0.75, "Strawberry":0.65, "Buttered Pecan":0.90}
กุญแจสำคัญในพจนานุกรมนี้คือชื่อไอศกรีมของเรา (เช่น “วานิลลา”) และค่าต่างๆ คือราคาต่อหนึ่งช้อนของไอศกรีมแต่ละชนิด
พจนานุกรมแบบซ้อนหลาม
พจนานุกรม Python ที่ซ้อนกันคือพจนานุกรมภายในพจนานุกรม ใช้เพื่อแสดงข้อมูลพจนานุกรมภายในพจนานุกรมอื่น คุณสามารถซ้อนพจนานุกรมในพจนานุกรมได้มากเท่าที่คุณต้องการ
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
พจนานุกรมแบบซ้อนมีประโยชน์หากคุณต้องการจัดเก็บพจนานุกรมองค์ประกอบต่างๆ ไว้ในพจนานุกรมขนาดใหญ่เพียงเล่มเดียว
มาดูตัวอย่างกันเพื่อแสดงให้เห็นว่าพจนานุกรมที่ซ้อนกันทำงานอย่างไร สมมติว่าเราต้องการสร้างพจนานุกรมที่เก็บพจนานุกรมเกี่ยวกับไอศกรีมแต่ละรสชาติที่จำหน่ายที่ The Frozen Spoon พจนานุกรมแต่ละรายการในพจนานุกรมขนาดใหญ่ของเราควรมีรายการ:
- ชื่อไอศกรีม
- ราคา
- มีในสต็อคกี่แก้ว
นี่คือลักษณะของพจนานุกรมแบบซ้อนที่จัดเก็บข้อมูลนี้:
ice_cream_flavors ={ 0:{ "flavor":"Vanilla", "price":0.50, "pints":20 }, 1:{ "flavor":"Chocolate", "price":0.50, "pints" :31 },2:{ "flavor":"Cookies and Cream", "price":0.75, "pints":14 }}
ในโค้ดของเรา เราได้ประกาศพจนานุกรมขนาดใหญ่หนึ่งพจนานุกรมชื่อ ice_cream_flavors . พจนานุกรมนี้มีพจนานุกรม 3 เล่ม โดยแต่ละพจนานุกรมจะเก็บข้อมูลเกี่ยวกับรสชาติของไอศกรีมโดยเฉพาะ
ถ้าเราไม่ได้ใช้พจนานุกรมแบบซ้อน เราจะต้องเก็บพจนานุกรมเหล่านี้ไว้ในตัวแปรแยกกัน สิ่งนี้ขัดกับสัญชาตญาณเพราะพจนานุกรมแต่ละเล่มเก็บข้อมูลเกี่ยวกับรสชาติของไอศกรีม
เข้าถึงรายการในพจนานุกรมที่ซ้อนกัน
ในการเข้าถึงรายการในพจนานุกรมที่ซ้อนกัน เราสามารถใช้ไวยากรณ์การจัดทำดัชนี
สมมติว่าเราต้องการเรียกราคาไอศกรีมที่มีค่าดัชนี 0 ในพจนานุกรมของเรา เราสามารถทำได้โดยใช้รหัสนี้:
ice_cream_flavors ={ 0:{ "flavor":"Vanilla", "price":0.50, "pints":20 }, 1:{ "flavor":"Chocolate", "price":0.50, "pints" :31 },2:{ "flavor":"Cookies and Cream", "price":0.75, "pints":14 }}print(ice_cream_flavors[0]["price"])print(ice_cream_flavors[0][" รส"])
รหัสของเราส่งคืน:
0.50วานิลลา
ในโค้ดนี้ ก่อนอื่นเราระบุคีย์รายการที่มีค่าอยู่ในพจนานุกรมขนาดใหญ่ของเราที่เราต้องการดึงข้อมูล ในกรณีนี้ เราต้องการเข้าถึงบันทึกด้วยค่าดัชนี 0
จากนั้นเราระบุชื่อของรายการในพจนานุกรมภายในของเราที่เราต้องการดึงข้อมูล ในกรณีนี้ เราต้องการเรียกคืนราคาไอศกรีมและรสชาติของเรา ดังนั้นเราจึงระบุ ราคา และ รสชาติ ทั้งใน print() . ของเรา แถลงการณ์
Nested Dictionary Python:เพิ่มองค์ประกอบ
ในการเพิ่มองค์ประกอบลงในพจนานุกรมที่ซ้อนกัน เราสามารถใช้ไวยากรณ์เดียวกันกับที่เราใช้ในการแก้ไขรายการ ไม่มีวิธีใดที่คุณควรใช้เพื่อเพิ่มรายการลงในพจนานุกรมที่ซ้อนกัน คุณต้องใช้ตัวดำเนินการมอบหมาย
ไวยากรณ์สำหรับการเพิ่มรายการมีดังนี้:
dictionary_name[new_key_name] =new_value
สมมติว่าเรามีพจนานุกรมที่เก็บข้อมูลเกี่ยวกับไอศกรีมวานิลลาขาย เราต้องการติดตามว่ามีส่วนลดสำหรับไอศกรีมหรือไม่ เราสามารถทำได้โดยใช้รหัสต่อไปนี้:
ice_cream_flavors ={ 0:{ "flavor":"Vanilla", "price":0.50, "pints":20 }, 1:{ "flavor":"Chocolate", "price":0.50, "pints" :31 },2:{ "flavor":"Cookies and Cream", "price":0.75, "pints":14 }}ice_cream_flavors[0]["discount"] =Trueprint(ice_cream_flavors[0])
เรียกใช้โค้ดของเราแล้วดูว่าเกิดอะไรขึ้น:
{'flavor':'Vanilla', 'price':0.5, 'pints':20, 'discount':True}
พจนานุกรมของเราเก็บอยู่ในตัวแปร Python “ice_cream_flavors”
เราได้เพิ่มรหัสที่เรียกว่า ส่วนลด ไปที่พจนานุกรม ตำแหน่งดัชนีของคีย์นี้คือ 0 เราตั้งค่าของคีย์นี้เป็น True จากนั้น เราพิมพ์พจนานุกรมที่มีค่าดัชนี 0 ใน ice_cream_flavors พจนานุกรมที่ซ้อนกัน นี่แสดงว่าส่วนลดของเรา เพิ่มคีย์แล้ว
เราสามารถใช้ไวยากรณ์นี้เพื่ออัปเดตองค์ประกอบในพจนานุกรมที่มีอยู่ สมมติว่าเราต้องการเปลี่ยนราคาไอศกรีมช็อกโกแลตของเราเป็น 0.45 เหรียญต่อสกู๊ป เราสามารถทำได้โดยใช้รหัสนี้:
ice_cream_flavors ={ 0:{ "flavor":"Vanilla", "price":0.50, "pints":20 }, 1:{ "flavor":"Chocolate", "price":0.50, "pints" :31 },2:{ "flavor":"Cookies and Cream", "price":0.75, "pints":14 }}ice_cream_flavors[1]["price"] =0.45print(ice_cream_flavors[1])ก่อน>รหัสของเราส่งคืน:
{'flavor':'Chocolate', 'price':0.45, 'pints':31}เราเปลี่ยนค่าของ ราคา กุญแจสำหรับไอศกรีมช็อกโกแลตของเราคือ $0.45
ในการทำเช่นนั้น เราได้ระบุค่าดัชนีของพจนานุกรมที่มี ราคา ค่าที่เราต้องการจะเปลี่ยนเป็น 1 ค่านี้มีข้อมูลเกี่ยวกับไอศกรีมช็อกโกแลตในพจนานุกรมของเรา จากนั้น เรากำหนดค่าใหม่ให้กับ ราคา ที่สำคัญ
ซ้อนพจนานุกรม Python:ลบองค์ประกอบ
ในการลบรายการที่จัดเก็บไว้ในพจนานุกรมที่ซ้อนกัน เราสามารถใช้ del คำแถลง. คำสั่ง del ให้คุณลบวัตถุได้ del ถูกเขียนเหมือนคำสั่ง Python break ในบรรทัดของตัวเอง ตามด้วยรายการในพจนานุกรมที่คุณต้องการลบ
สมมติว่าเราไม่ได้ให้บริการคุกกี้และไอศกรีมที่ร้านของเราชั่วคราวอีกต่อไป ตู้แช่แข็งของเราที่เก็บไอศกรีมคุกกี้และครีมหยุดทำงานและสินค้าละลาย
เราสามารถลบไอศกรีมนี้ออกจากพจนานุกรมที่ซ้อนกันของเราโดยใช้รหัสต่อไปนี้:
ice_cream_flavors ={ 0:{ "flavor":"Vanilla", "price":0.50, "pints":20 }, 1:{ "flavor":"Chocolate", "price":0.50, "pints" :31 },2:{ "flavor":"Cookies and Cream", "price":0.75, "pints":14 }}del ice_cream_flavors[2]print(ice_cream_flavors)รหัสของเราส่งคืน:
{0:{'flavor':'Vanilla', 'price':0.5, 'pints':20}, 1:{'flavor':'Chocolate', 'price':0.5, 'pints':31 }}ในโค้ดของเรา เราใช้ del คำสั่งให้ลบค่าในพจนานุกรมที่ซ้อนกันซึ่งมีคีย์เท่ากับ 2 ดังที่คุณเห็น สิ่งนี้ได้ลบรายการสำหรับ Cookies and Cream จากพจนานุกรมที่ซ้อนกันของเรา
ย้ำผ่านพจนานุกรม Python Nested
ตอนนี้ สมมติว่าเราต้องการพิมพ์เนื้อหาของแต่ละพจนานุกรมในพจนานุกรมที่ซ้อนกันของเราไปยังคอนโซล เราจะทำภารกิจนี้ให้สำเร็จได้อย่างไร
นั่นเป็นคำถามที่ดี ในการพิมพ์เนื้อหาของพจนานุกรมที่ซ้อนกัน เราสามารถทำซ้ำได้โดยใช้ Python for loop เราจะใช้เมธอดรายการพจนานุกรม Python เพื่อดึงรายการคีย์และค่าในพจนานุกรมของเรา:
ice_cream_flavors ={ 0:{ "flavor":"Vanilla", "price":0.50, "pints":20 }, 1:{ "flavor":"Chocolate", "price":0.50, "pints" :31 },2:{ "flavor":"Cookies and Cream", "price":0.75, "pints":14 }}สำหรับคีย์ ค่าใน ice_cream_flavors.items():print("Ice Cream:", คีย์ ) สำหรับ k, v ใน value.items():print(k + ":", value[k])รหัสของเราส่งคืน:
ไอศกรีม:0รส:วานิลลาราคา:0.5pints:20ไอศกรีม:1รส:ช็อกโกแลตราคา:0.5pints:31ไอศกรีม:2รส:คุกกี้และครีมราคา:0.75pints:14มาทำลายรหัสของเรากัน ขั้นแรก เราได้กำหนดพจนานุกรมของรสชาติไอศกรีมที่ซ้อนกันไว้
จากนั้น เราได้กำหนด for loop ที่ผ่านแต่ละคีย์และค่าใน ice_cream_flavors พจนานุกรม. ลูปนี้ใช้ .items() เพื่อสร้างรายการคีย์และค่าทั้งหมดใน ice_cream_flavors . ของเรา พจนานุกรม ซึ่งวนซ้ำสามารถวนซ้ำได้
จากนั้น เราก็พิมพ์ ไอศกรีม: ตามด้วยคีย์ที่เกี่ยวข้องกับไอศกรีมโดยเฉพาะ
ต่อไป เราใช้ another for loop เพื่อวนซ้ำทุกรายการในแต่ละ value ในพจนานุกรมที่ซ้อนกันของเรา นี่หมายถึงแต่ละรายการภายในในพจนานุกรมที่ซ้อนกันของเรา (เช่นรายการสำหรับวานิลลาและช็อคโกแลต) ลูปนี้จะพิมพ์ชื่อของแต่ละคีย์ในพจนานุกรมภายในของเรา ตามด้วยโคลอน แล้วตามด้วยค่าที่เกี่ยวข้องกับคีย์นั้น
บทสรุป
พจนานุกรมที่ซ้อนกันทำให้คุณสามารถจัดเก็บพจนานุกรมไว้ในพจนานุกรมในภาษา Python
บทแนะนำนี้มีการพูดคุยถึงตัวอย่าง วิธีการ:
- สร้างพจนานุกรมที่ซ้อนกัน
- เพิ่มองค์ประกอบและอัปเดตองค์ประกอบในพจนานุกรมที่ซ้อนกัน
- ลบองค์ประกอบออกจากพจนานุกรมที่ซ้อนกัน
- ทำซ้ำผ่านพจนานุกรมที่ซ้อนกัน
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Python โปรดอ่านคู่มือ How to Code ใน Python