พจนานุกรม Python: คุณสามารถใช้เพื่อเขียนโค้ดที่ดีขึ้นได้อย่างไร

พจนานุกรม Python: คุณสามารถใช้เพื่อเขียนโค้ดที่ดีขึ้นได้อย่างไร

พจนานุกรม 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
เกี่ยวกับผู้เขียน เจ ศรีธา(เผยแพร่บทความ 17 บทความ) เพิ่มเติมจาก Jay Sridhar

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก