Python - พจนานุกรม
แต่ละคีย์จะถูกแยกออกจากค่าด้วยเครื่องหมายจุดคู่ (:) รายการจะถูกคั่นด้วยลูกน้ำและสิ่งทั้งหมดจะอยู่ในวงเล็บปีกกา พจนานุกรมว่างเปล่าที่ไม่มีรายการใด ๆ เขียนด้วยวงเล็บปีกกาเพียงสองอันดังนี้: {}
คีย์จะไม่ซ้ำกันภายในพจนานุกรมในขณะที่อาจไม่มีค่า ค่าของพจนานุกรมอาจเป็นประเภทใดก็ได้ แต่คีย์ต้องเป็นประเภทข้อมูลที่ไม่เปลี่ยนรูปเช่นสตริงตัวเลขหรือสิ่งที่เพิ่มขึ้น
การเข้าถึงค่าในพจนานุกรม
ในการเข้าถึงองค์ประกอบของพจนานุกรมคุณสามารถใช้วงเล็บเหลี่ยมที่คุ้นเคยพร้อมกับคีย์เพื่อรับค่าได้ ต่อไปนี้เป็นตัวอย่างง่ายๆ -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
dict['Name']: Zara
dict['Age']: 7
หากเราพยายามเข้าถึงรายการข้อมูลด้วยคีย์ซึ่งไม่ได้เป็นส่วนหนึ่งของพจนานุกรมเราจะได้รับข้อผิดพลาดดังนี้ -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
dict['Alice']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
กำลังอัปเดตพจนานุกรม
คุณสามารถอัปเดตพจนานุกรมโดยการเพิ่มรายการใหม่หรือคู่คีย์ - ค่าแก้ไขรายการที่มีอยู่หรือลบรายการที่มีอยู่ดังที่แสดงด้านล่างในตัวอย่างง่ายๆ -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
dict['Age']: 8
dict['School']: DPS School
ลบองค์ประกอบของพจนานุกรม
คุณสามารถลบองค์ประกอบของพจนานุกรมแต่ละรายการหรือล้างเนื้อหาทั้งหมดของพจนานุกรม คุณยังสามารถลบพจนานุกรมทั้งหมดได้ในการดำเนินการเดียว
หากต้องการลบพจนานุกรมทั้งหมดอย่างชัดเจนให้ใช้ไฟล์ delคำให้การ. ต่อไปนี้เป็นตัวอย่างง่ายๆ -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear(); # remove all entries in dict
del dict ; # delete entire dictionary
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
สิ่งนี้ก่อให้เกิดผลลัพธ์ต่อไปนี้ โปรดทราบว่ามีการเพิ่มข้อยกเว้นเนื่องจากหลังจากdel dict ไม่มีพจนานุกรมอีกต่อไป -
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
Note - วิธีการ del () จะกล่าวถึงในส่วนต่อไป
คุณสมบัติของคีย์พจนานุกรม
ค่าพจนานุกรมไม่มีข้อ จำกัด สามารถเป็นวัตถุ Python ใด ๆ ก็ได้ไม่ว่าจะเป็นวัตถุมาตรฐานหรือวัตถุที่ผู้ใช้กำหนดเอง อย่างไรก็ตามไม่เป็นความจริงสำหรับคีย์
มีสองประเด็นสำคัญที่ต้องจำเกี่ยวกับคีย์พจนานุกรม -
(a)ไม่อนุญาตให้มีมากกว่าหนึ่งรายการต่อคีย์ ซึ่งหมายความว่าไม่อนุญาตให้ใช้คีย์ที่ซ้ำกัน เมื่อพบคีย์ที่ซ้ำกันระหว่างการมอบหมายงานสุดท้ายจะชนะ ตัวอย่างเช่น -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
dict['Name']: Manni
(b)คีย์ต้องไม่เปลี่ยนรูป ซึ่งหมายความว่าคุณสามารถใช้สตริงตัวเลขหรือทูเปิลเป็นคีย์พจนานุกรมได้ แต่ไม่อนุญาตให้ใช้ ['คีย์'] ต่อไปนี้เป็นตัวอย่างง่ายๆ -
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: unhashable type: 'list'
ฟังก์ชันและวิธีการพจนานุกรมในตัว
Python มีฟังก์ชันพจนานุกรมดังต่อไปนี้ -
ซีเนียร์ | ฟังก์ชั่นพร้อมคำอธิบาย |
---|---|
1 | cmp (dict1, dict2) เปรียบเทียบองค์ประกอบของทั้งสองคำสั่ง |
2 | เลน (dict) ระบุความยาวทั้งหมดของพจนานุกรม นี่จะเท่ากับจำนวนรายการในพจนานุกรม |
3 | str (dict) สร้างการแสดงสตริงที่สามารถพิมพ์ได้ของพจนานุกรม |
4 | ประเภท (ตัวแปร) ส่งคืนชนิดของตัวแปรที่ส่ง ถ้าตัวแปรที่ส่งเป็นพจนานุกรมก็จะส่งคืนประเภทพจนานุกรม |
Python มีวิธีการใช้พจนานุกรมดังต่อไปนี้ -
ซีเนียร์ | วิธีการพร้อมคำอธิบาย |
---|---|
1 | dict.clear () เอาองค์ประกอบทั้งหมดของพจนานุกรมDict |
2 | dict.copy () ผลตอบแทนสำเนาตื้นของพจนานุกรมDict |
3 | dict.fromkeys () สร้างพจนานุกรมใหม่ที่มีกุญแจจากหมายเลขและค่าที่ตั้งจะคุ้มค่า |
4 | dict.get (คีย์ค่าเริ่มต้น = ไม่มี) สำหรับคีย์คีย์ให้ส่งคืนค่าหรือค่าเริ่มต้นหากคีย์ไม่อยู่ในพจนานุกรม |
5 | dict.has_key (คีย์) ผลตอบแทนที่แท้จริงถ้าสำคัญในพจนานุกรมDict , เท็จอย่างอื่น |
6 | dict.items () ส่งคืนรายการของคู่ทูเปิล (คีย์ค่า) ของdict |
7 | dict.keys () ส่งคืนรายการคีย์ของดิกชันนารี |
8 | dict.setdefault (คีย์ค่าเริ่มต้น = ไม่มี) คล้ายกับ get () แต่จะตั้งค่า dict [คีย์] = ค่าเริ่มต้นหากคีย์ไม่ได้อยู่ใน dict |
9 | dict.update (dict2) เพิ่มคู่คีย์ - ค่าของพจนานุกรมdict2ลงในdict |
10 | dict.values () รายการผลตอบแทนของพจนานุกรมDictค่า 's |