พจนานุกรม python เป็นโครงสร้างข้อมูลที่คล้ายกับ associative array ที่พบในภาษาโปรแกรมอื่นๆ อาร์เรย์หรือรายการสร้างดัชนีองค์ประกอบตามตำแหน่ง ในทางกลับกัน พจนานุกรมจะจัดทำดัชนีองค์ประกอบโดย กุญแจ ซึ่งสามารถเป็นสตริงได้ คิดว่าพจนานุกรมเป็นชุดที่ไม่เรียงลำดับของ คีย์-ค่า คู่
ในบทความนี้ เราแนะนำให้คุณรู้จักกับการใช้พจนานุกรมหลาม
การสร้างพจนานุกรม
มีหลายวิธีในการสร้างพจนานุกรมหลาม ง่ายที่สุดใช้การเริ่มต้นวงเล็บปีกกาด้วยไวยากรณ์ที่ชวนให้นึกถึง JSON
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
คุณสามารถใช้ตัวเลขเป็นกุญแจได้เช่นกัน อย่างไรก็ตาม โปรดใช้ความระมัดระวังในการใช้ตัวเลขทศนิยมเป็นคีย์ เนื่องจากคอมพิวเตอร์จะเก็บข้อมูลเหล่านี้เป็นค่าประมาณ
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent)
print(rain_percent[1980])
# prints
{1980: '17%', 1981: '15%', 1982: '10%'}
17%
การระบุคู่คีย์-ค่า
คุณยังสามารถสร้างและเริ่มต้นพจนานุกรมโดยใช้คู่ค่าชื่อเป็นอาร์กิวเมนต์ของคีย์เวิร์ดไปยัง ดิค() ผู้สร้าง
วิธีรับโปเกมอนสำหรับ ipad
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}
อาร์เรย์ของทูเพิลคีย์-ค่า
อีกวิธีหนึ่งในการสร้างพจนานุกรมคือการใช้อาร์เรย์ของทูเพิลคีย์-ค่า นี่คือตัวอย่างเดียวกันกับข้างต้น
pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]
population = dict(pairs)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}
ความเข้าใจ Dict
Dict comprehension จัดเตรียมไวยากรณ์เจ๋งๆ เพื่อเริ่มต้น dict ถ้าคุณสามารถคำนวณค่าตามคีย์ได้ ต่อไปนี้เริ่มต้น dict ของตัวเลขและค่ากำลังสองสำหรับช่วงของตัวเลข
print({x: x**2 for x in xrange(10, 20)})
# prints
{10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}
มันทำงานอย่างไร? ส่วนหลัง ( สำหรับ x ใน xrange(10, 20) ) ส่งกลับช่วงของตัวเลขในช่วงที่ระบุ ส่วนความเข้าใจ dict ( {x: x**2 ..} ) วนซ้ำในช่วงนี้และเริ่มต้นพจนานุกรม
การทำงานกับพจนานุกรมหลาม
คุณสามารถทำอะไรกับพจนานุกรมเมื่อคุณสร้างพจนานุกรมแล้ว คุณสามารถเข้าถึงองค์ประกอบ อัปเดตค่า ลบองค์ประกอบ ฯลฯ
การเข้าถึงองค์ประกอบพจนานุกรม Python
เข้าถึงองค์ประกอบของ dict โดยใช้คีย์ภายในวงเล็บ เช่นเดียวกับที่คุณต้องการ อาร์เรย์หรือรายการ .
print(population['Delaware'])
# prints
897934
หากคีย์เป็นตัวเลข คุณไม่จำเป็นต้องใส่เครื่องหมายคำพูด นิพจน์จะดูเหมือนรายการหรือการทำดัชนีอาร์เรย์
print(rain_percent[1980])
# prints
17%
ประเภทของคีย์เมื่อเข้าถึงจะต้องตรงกับสิ่งที่จัดเก็บไว้ในพจนานุกรม Python ต่อไปนี้ทำให้เกิดข้อผิดพลาดเนื่องจากคีย์ที่เก็บไว้เป็นตัวเลขในขณะที่คีย์การเข้าถึงเป็นสตริง
x = '1980'
print(rain_percent[x])
# results in
1 x = '1980'
----> 2 print(rain_percent[x])
KeyError: '1980'
การเข้าถึงคีย์ที่ไม่มีอยู่จริง เป็นข้อผิดพลาด
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent[1983])
# prints
1 rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
----> 2 print(rain_percent[1983])
KeyError: 1983
ในการเข้าถึงคีย์และระบุค่าเริ่มต้นหากไม่มีการแมป ให้ใช้ รับ() วิธีการที่มีค่าเริ่มต้นเป็นอาร์กิวเมนต์ที่สอง
วิธีทำวอลเปเปอร์ gif windows 10
print(rain_percent.get(1985, '0%'))
# prints
0%
การตรวจสอบการมีอยู่
จะทำอย่างไรถ้าคุณต้องการตรวจสอบการมีอยู่ของคีย์โดยไม่ต้องพยายามเข้าถึง (และอาจพบ a ข้อผิดพลาดที่สำคัญ ดังกล่าวข้างต้น)? คุณสามารถใช้ ใน คีย์เวิร์ดในแบบฟอร์ม ป้อนdct ซึ่งส่งคืนบูลีน
print(1980 in rain_percent)
print('1980' in rain_percent)
# prints
True
False
ย้อนกลับเงื่อนไข (เช่น ตรวจสอบให้แน่ใจว่าไม่มีคีย์ในพจนานุกรม Python) โดยใช้ form คีย์ไม่อยู่ในdct . นี่เทียบเท่ากับการปฏิเสธหลามมาตรฐาน ไม่คีย์ในdct .
print(1980 not in rain_percent)
print(1985 not in rain_percent)
# prints
False
True
การปรับเปลี่ยนองค์ประกอบ
เปลี่ยนค่าโดยกำหนดให้กับคีย์ที่ต้องการ
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users['age'] = 29
print(users)
# prints
{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
ใช้ไวยากรณ์เดียวกันเพื่อเพิ่มการแมปใหม่ไปยังพจนานุกรม Python
users['dob'] = '15-sep-1971'
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
อัปเดตองค์ประกอบหลาย ๆ อย่างของพจนานุกรมในช็อตเดียวโดยใช้ อัปเดต() กระบวนการ.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.update({'age': 29, 'dob': '15-sep-1971'})
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
ตั้งค่าเริ่มต้นสำหรับคีย์โดยใช้ ค่าเริ่มต้น () . เมธอดนี้ตั้งค่าสำหรับคีย์หากไม่มีการแมป จะส่งกลับค่าปัจจุบัน
# does not change current value
print(users.setdefault('firstname', 'Jane'))
# prints
John
# sets value
print(users.setdefault('city', 'NY'))
# prints
NY
# Final value
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}
การลบองค์ประกอบ
ลบการแมปในพจนานุกรมโดยใช้ ของ โอเปอเรเตอร์ โอเปอเรเตอร์นี้ไม่ส่งคืนสิ่งใด
คุณจะพบกับ ข้อผิดพลาดที่สำคัญ หากไม่มีคีย์ในพจนานุกรม
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
del users['age']
print(users)
# prints
{'lastname': 'Smith', 'firstname': 'John'}
ใช้ โผล่ () วิธีแทนเมื่อคุณต้องการลบค่ากลับ
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
print(users.pop('age'))
print(users)
# prints
27
{'lastname': 'Smith', 'firstname': 'John'}
จะทำอย่างไรถ้าคุณต้องการลบคีย์หากมีอยู่โดยไม่ทำให้เกิดข้อผิดพลาดหากไม่มี คุณสามารถใช้ได้ โผล่ () และระบุ ไม่มี สำหรับอาร์กิวเมนต์ที่สองดังนี้:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.pop('foo', None)
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}
และนี่คือบรรทัดเดียวในการลบพวงของคีย์จากพจนานุกรมโดยไม่ทำให้เกิดข้อผิดพลาดในคีย์ที่ไม่มีอยู่จริง
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}
map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])
print(users)
ต้องการลบคีย์ทั้งหมดออกจากพจนานุกรมหรือไม่? ใช้ แจ่มใส() กระบวนการ.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.clear()
print(users)
# prints
{}
วนลูปด้วยพจนานุกรม Python
Python มีวิธีการมากมายสำหรับการวนซ้ำรายการในพจนานุกรม เลือกหนึ่งรายการเพื่อให้เหมาะกับความต้องการของคุณ
วนรอบคีย์
- วิธีที่ง่ายที่สุดสำหรับการประมวลผลคีย์ (และค่าที่เป็นไปได้) ตามลำดับใช้รูปแบบการวนซ้ำ: |_+_|
- โดยใช้วิธี iterkeys() ทำงานเหมือนกับด้านบน เลือกรูปแบบที่คุณต้องการใช้ |_+_|
- วิธีที่สามในการดึงและประมวลผลคีย์ในลูปเกี่ยวข้องกับการใช้ฟังก์ชันในตัว ไอเตอร์ () .
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
for k in users:
print(k, '=>', users[k])
# prints
lastname => Smith
age => 27
firstname => John - เมื่อคุณต้องการดัชนีของคีย์ที่กำลังประมวลผล ให้ใช้ แจกแจง () ฟังก์ชั่นในตัวตามที่แสดง |_+_|
วนรอบคู่คีย์-ค่า
- เมื่อคุณต้องการดึงคู่คีย์-ค่าแต่ละคู่ด้วยการเรียกครั้งเดียว ให้ใช้ รายการซ้ำ () .
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
for k in users.iterkeys():
print(k, '=>', users[k])
# prints
lastname => Smith
age => 27
firstname => John
วนซ้ำค่า
- วิธีการ ค่าซ้ำ () สามารถใช้เพื่อวนซ้ำค่าทั้งหมดในพจนานุกรม แม้ว่าวิธีนี้จะดูคล้ายกับการวนซ้ำโดยใช้ ค่า () มีประสิทธิภาพมากกว่าเนื่องจากไม่ได้แยกค่าทั้งหมดพร้อมกัน |_+_|
การแยกอาร์เรย์
วิธีการต่อไปนี้อธิบายการดึงข้อมูลพจนานุกรม Python ต่างๆ ในรูปแบบอาร์เรย์ อาร์เรย์ผลลัพธ์สามารถวนซ้ำได้โดยใช้โครงสร้างหลามปกติ อย่างไรก็ตาม โปรดทราบว่าอาร์เรย์ที่ส่งคืนอาจมีขนาดใหญ่ขึ้นอยู่กับขนาดของพจนานุกรม มันอาจจะมากกว่านั้นก็ได้ ราคาแพง (หน่วยความจำที่ชาญฉลาด) เพื่อประมวลผลอาร์เรย์เหล่านี้มากกว่าการใช้วิธีการวนซ้ำด้านบน
กรณีหนึ่งที่ยอมรับได้ในการทำงานกับอาร์เรย์เหล่านี้คือเมื่อคุณต้องการลบรายการออกจากพจนานุกรมเมื่อคุณพบองค์ประกอบที่ไม่พึงประสงค์ การทำงานกับตัววนซ้ำขณะแก้ไขพจนานุกรมอาจทำให้เกิด RuntimeError
- วิธีการ รายการ() ส่งคืนอาร์เรย์ของทูเพิลคีย์-ค่า คุณสามารถวนซ้ำคู่คีย์-ค่าเหล่านี้ดังที่แสดง: |_+_|
- ดึงคีย์ทั้งหมดในพจนานุกรมโดยใช้ method กุญแจ () . |_+_| ใช้อาร์เรย์ที่ส่งคืนเพื่อวนซ้ำคีย์ |_+_|
- ในทำนองเดียวกันให้ใช้วิธีการ ค่า () เพื่อดึงค่าทั้งหมดในพจนานุกรม |_+_|
คุณใช้พจนานุกรม Python อย่างไร?
เราได้พยายามครอบคลุมกรณีการใช้งานทั่วไปสำหรับพจนานุกรมหลามในบทความนี้ อย่าลืมตรวจสอบทั้งหมดของเรา บทความ Python อื่น ๆ สำหรับคำแนะนำ Python เพิ่มเติม หากคุณมีกรณีการใช้งานอื่นๆ ที่คุณรู้สึกว่าควรรวมไว้ โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง!
cpu ทำงานที่ 100 windows 10
เครดิตรูปภาพ: viper345/Shutterstock
แบ่งปัน แบ่งปัน ทวีต อีเมล วิธีเข้าถึงระดับบับเบิ้ลในตัวของ Google บน Androidหากคุณเคยต้องการให้แน่ใจว่าบางสิ่งบางอย่างอยู่ในระดับอย่างรวดเร็ว ตอนนี้คุณสามารถรับระดับฟองบนโทรศัพท์ได้ในไม่กี่วินาที
อ่านต่อไป หัวข้อที่เกี่ยวข้อง- การเขียนโปรแกรม
- Python
สมัครรับจดหมายข่าวของเรา
เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!
คลิกที่นี่เพื่อสมัครสมาชิก