Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Nested Dictionary:A How-To Guide

พจนานุกรม 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