Dictionary ในภาษา Python
ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับโครงสร้างข้อมูล Dictionary ในภาษา Python เราจะแนะนำให้คุณรู้จักกับ Dictionary คืออะไร และการประกาศและใช้งานสำหรับเก็บข้อมูลในการเขียนโปรแกรม นอกจากนี้ เรายังจะพูดถึงการใช้งานเมธอดและ built-in functions ของ Dictionary และตัวอย่างการใช้งานกับการเขียนโปรแกรมในรูปแบบต่างๆ ในภาษา Python
Dictionary คือประเภทข้อมูลที่เก็บข้อมูลในรูปแบบคู่ของ Key และ Value โดยที่ Key ใช้สำหรับเป็น Index ในการเข้าถึงข้อมูลและ Value เป็นค่าข้อมูลที่สอดคล้องกับ Key ของมัน การเข้าถึงข้อมูลใน Dictionary นั้นรวดเร็วเพราะว่าข้อมูลได้ถูกทำ Index ไว้อัตโนมัติโดยใช้ Key นอกจากนี้ Dictionary ยังมีเมธอดและฟังก์ชันอำนวยความสะดวกสำหรับการทำงานทั่วไป
การประกาศ Dictionary ในภาษา Python
ในการใช้งาน Dictionary เรามักจะใช้เก็บข้อมูลที่สามารถใช้บางอย่างที่สามารถจำแนกข้อมูลออกจากกันได้ โดยกำหนดให้สิ่งนั้นเป็น Key ในการประกาศ Dictionary สมาชิกของมันจะอยู่ภายในวงเล็บปีกกา {}
มาดูตัวอย่างในการประกาศ Dictionary ในภาษา Python
scores = {'james': 1828, 'thomas': 3628, 'danny': 9310}
scores['bobby'] = 4401
numbers = {1: 'One', 2: 'Two', 3: 'Three'}
print(scores)
print(numbers)
ในตัวอย่าง เราได้ประกาศตัวแปร Dictionary ที่มีชื่อว่า scores
สำหรับเก็บคะแนนของแต่ละคนโดยใช้ชื่อเป็น Key และค่าของมันก็คือคะแนน สมาชิกของ Dictionary แต่ละตัวจะถูกกำหนดในรูปแบบ key: value
และคั่นสมาชิกแต่ละตัวด้วยเครื่องหมายคอมมา เราได้กำหนดค่าเริ่มต้นสามค่าให้กับ Dictionary และสามารถกำหนดค่าให้กับ Dictionary ในรูปแบบ scores['bobby']
ได้หลังจากที่ตัวแปรถูกสร้างแล้ว สังเกตว่าเราสามารถใช้ Key เป็น String หรือประเภทข้อมูลอื่นๆ ได้ ต่อมาตัวแปร numbers
เป็น Dictionary ที่มี Key เป็นตัวเลข
{'james': 1828, 'thomas': 3628, 'danny': 9310, 'bobby': 4401}
{1: 'One', 2: 'Two', 3: 'Three'}
นี่เป็นผลลัพธ์ของโปรแกรมในการแสดงผลข้อมูลภายในตัวแปร Dictionary ทั้งสองที่เราได้สร้างขึ้น
การเข้าถึงข้อมูลภายใน Dictionary
หลังจากที่เราได้ประกาศ Dictionary ไปแล้ว ต่อไปจะเป็นการเข้าถึงข้อมูลเพื่ออ่านและอัพเดทข้อมูลโดยผ่านทาง Key ของมัน มาดูตัวอย่างการเข้าถึงข้อมูลใน Dictionary
scores = {'james': 1828, 'thomas': 3628, 'danny': 9310, 'bobby': 4401}
# display data
print('james =>', scores['james'])
print('thomas =>', scores['thomas'])
print('danny =>', scores['danny'])
print('bobby =>', scores['bobby'])
# update data
scores['james'] = scores['james'] + 1000
scores['thomas'] = 100
print('james =>', scores['james'])
print('thomas =>', scores['thomas'])
ในตัวอย่าง เรามีตัวแปร scores
สำหรับเก็บคะแนนของผู้เล่นโดยชื่อเป็น Key ของ Dictionary ในการเข้าถึงข้อมูลนั้นจะใช้ Key ของมัน ในส่วนแรกเป็นการเข้าถึงข้อมูลภายใน Dictionary เพื่อแสดงผลคะแนนของแต่ละ Key ออกมาทางหน้าจอ ต่อมาเป็นการอัพเดทข้อมูลใน Dictionary โดยเราได้เพิ่มค่าให้กับ Key 'james'
ขึ้นไปอีก 1000 และกำหนดค่าให้กับ Key 'thomas'
เป็น 100 และแสดงผลอีกครั้ง
james => 1828
thomas => 3628
danny => 9310
bobby => 4401
james => 2828
thomas => 100
นี่เป็นผลลัพธ์การทำงานของโปรแกรม ในการเข้าถึงข้อมูลภายใน Dictionary เพื่ออ่านค่าและอัพเดทข้อมูล
ในการเข้าถึงข้อมูลภายใน Dictionary นั้น คุณต้องตรวจสอบให้แน่ใจว่า Key นั้นมีอยู่จริง ไม่เช่นนั้นโปรแกรมจะเกิดข้อผิดพลาดขึ้น ยกตัวอย่างเช่น
scores = {'james': 1828, 'thomas': 3628, 'danny': 9310, 'bobby': 4401}
print(scores['smith']) # Error
# check if key smith exist
if 'smith' in scores.keys():
print(scores['smith'])
ในตัวอย่างข้างบน โปรแกรมจะเกิดความผิดพลาดขึ้นเพราะเราได้เข้าถึง Key 'smith'
ซึ่งไม่มีอยู่ใน scores
อย่าไรก็ตาม เราสามารถตรวจว่า Key มีอยู่หรือไม่ได้โดยการใช้คำสั่ง in
เพื่อตรวจสอบจาก Key ในเมธอด keys()
ของ Dictionary
การอ่านค่าใน Dictionary ด้วยคำสั่ง For loop
คำสั่ง For loop นั้นเป็นคำสั่งที่ยืดหยุ่นและสามารถใช้งานได้อย่างหลากหลาย ในการอ่านค่าใน Dictionary นั้นเราสามารถใช้ For loop เพื่อวนอ่านค่าทั้ง Key และ Values ใน Dictionary ได้ มาดูตัวอย่างของโปรแกรม
countries = {'de': 'Germany', 'ua': 'Ukraine',
'th': 'Thailand', 'nl': 'Netherlands'}
for k, v in countries.items():
print(k, v)
# iterate through keys
print('Key:', end = ' ')
for k in countries.keys():
print(k, end = ' ')
# iterate through values
print('\nValue:', end = ' ')
for v in countries.values():
print(v, end = ' ')
ในตัวอย่าง เป็นการใช้งานคำสั่ง For loop วนอ่านค่าใน Dictionary ซึ่งมี 3 loop ด้วยกัน ในลูปแรกเป็นการอ่านค่าแบบ Key และ Value ในแต่ละรอบของการทำงานเราเอาข้อมูลใน Dictionary ด้วยเมธอด items()
ซึ่งจะส่งค่ากลับเป็น Key และ Value กับมาและโหลดใส่ในตัวแปร k
และ v
ตามลำดับ
ในลูปที่สอง เป็นการวนอ่าน Key ทั้งหมดภายใน Dictionary โดยเมธอด keys()
จะส่งค่ากลับเป็น List ของ Key ทั้งหมดและโหลดใส่ในตัวแปร k
แต่ละรอบของลูป และในลูปสุดท้ายนั้นเป็นการอ่าน Value ทั้งหมด และเมธอด values()
เพื่อรับค่าของ Value ทั้งหมดมาและใส่ในตัวแปร v
ในแต่ละรอบของลูป
de Germany
ua Ukraine
th Thailand
nl Netherlands
Key: de ua th nl
Value: Germany Ukraine Thailand Netherlands
นี่เป็นผลลัพธ์การทำงานของโปรแกรม ในการใช้คำสั่ง For loop เพื่ออ่านข้อมูลใน Dictionary ในภาษา Python
Python Dictionary methods
เช่นเดียวกับข้อมูลประเภทอื่นๆ Dictionary มีเมธอดที่ให้คุณสามารถทำงานกับมันได้ง่ายขึ้น โดยส่วนมากแล้วมักจะเป็นเมธอดในการอัพเดทและรับค่าข้อมูลภายใน Dictionary ต่อไปมาดูตัวอย่างการใช้งานเมธอดของ Dictionary ในภาษา Python
countries = {'de': 'Germany', 'ua': 'Ukraine',
'th': 'Thailand', 'nl': 'Netherlands'}
print(countries.keys())
print(countries.values())
print(countries.get('de')) # equal to countries['de']
countries.setdefault('tr', 'Turkey')
print(countries.popitem())
print(countries.popitem())
print(countries.items())
ในตัวอย่าง เป็นโปรแกรมในการใช้งานเมธอดของ Dictionary ตัวแปรของเรา countries
มาจากตัวอย่างก่อนหน้าที่มี Key เป็นชื่อย่อของประเทศและ Value เป็นชื่อเต็มของประเทศ เมธอด keys()
ส่งค่ากลับเป็น List ของ Key ทั้งหมดภายใน Dictionary และเมธอด values()
นั้นจะส่งเป็น List ของ Value
หลังจากนั้นเป็นการเข้าถึงข้อมูลด้วยเมธอด get()
โดยมี Key เป็นอาร์กิวเมนต์ซึ่งผลลัพธ์การทำงานของมันจะเหมือนกับการเข้าถึงข้อมูลโดยตรง เช่น countries['de']
และเมธอด setdefault()
ใช้รับค่าจากคีย์ที่กำหนด ถ้าไม่มีจะเป็นการเพิ่มค่าดังกล่าวเข้าไปใน Dictionary และต่อมาเมธอด popitem()
จะนำสมาชิกตัวสุดท้ายออกจาก Dictionary และส่งค่าดังกล่าวกลับมาเป็น Tuple ออบเจ็ค ส่วนเมธอด items()
นั้นจะส่งค่ากลับมาเป็น List ของ Tuple ของออบเจ็คของ Key และ Value ทั้งหมด
dict_keys(['de', 'ua', 'th', 'nl'])
dict_values(['Germany', 'Ukraine', 'Thailand', 'Netherlands'])
Germany
('tr', 'Turkey')
('nl', 'Netherlands')
dict_items([('de', 'Germany'), ('ua', 'Ukraine'), ('th', 'Thailand')])
นี่เป็นผลลัพธ์การทำงานของโปรแกรม ในการใช้เมธอดของ Dictionary ในภาษา Python และจากในตัวอย่างนั้นเป็นเพียงส่วนหนึ่งของเมธอดที่มีเท่านั้น สำหรับเมธอดทั้งหมดใน Dictionary นั้นแสดงดังตารางข้างล่างนี้
Methods | Description |
---|---|
clear() | ลบข้อมูลทั้งหมดภายใน Dictionary |
copy() | คัดลอก Dictionary ทั้งหมดไปยังอันใหม่ |
get(key[, default]) | ส่งค่าข้อมูลใน Dictionary จาก Key ที่กำหนด ถ้าหากไม่มี Key อยู่และไม่ได้กำหนด default จะทำให้เกิดข้อผิดพลาด `KeyError` |
items() | ส่งค่ากลับเป็นออบเจ็คของ Key และ Value |
keys() | ส่งค่ากลับเป็น List ของ Key ทั้งหมดใน Dictionary |
pop(key[, default]) | ส่งค่ากลับเป็นค่าสุดท้ายใน Dictionary |
popitem() | ส่งค่ากลับเป็น Tuple ออบเจ็คของ Key และ Value |
setdefault(key[, default]) | ส่งค่ากลับเป็นค่าของ Key ที่กำหนด ถ้าหากไม่มี Key อยู่ใส่ข้อมูลเข้าไปใน Dictionary |
update([other]) | อัพเดท Dictionary กับคู่ของ Key และ Value จากออบเจ็คอื่น และเขียนทับ Key ที่มีอยู่ |
values() | ส่งค่ากลับเป็น List ของ Value ทั้งหมดใน Dictionary |
Python Dictionary functions
ฟังก์ชันที่เป็นพื้นฐานและสามารถใช้ได้กับโครงสร้างข้อมูลทุกประเภทคือฟังก์ชัน len()
เป็นฟังก์ชันที่ใช้สำหรับนับจำนวนสมาชิกของเจ็ค และ Dictionary ยังมีฟังก์ชัน iter()
ที่ทำงานเหมือนกับเมธอด items()
นี่เป็นตารางของฟังก์ชันที่สามารถใช้ได้กับ Dictionary
Function | Description |
---|---|
len(dict) | ส่งค่ากลับเป็นจำนวนของออบเจ็คใน Dictionary |
iter(dict) | ส่งค่ากลับเป็นออบเจ็คของ Key และ Value |
คุณสามารถใช้คำสั่ง del
เพื่อลบข้อมูลภายใน Dictionary ได้ เช่น คำสั่ง del countries['de']
เพื่อลบสมาชิกที่มี Key ที่กำหนดออกไป และคำสั่ง del countries
นั้นเป็นการลบทั้งตัวแปร
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับ Dictionary ในภาษา Python คุณได้ทราบวิธีการสร้างและใช้งาน Dictionary และสถานการณ์ที่เหมาะสมที่จะใช้ข้อมูลประเภทนี้ เราได้แสดงให้เห็นถึงการเข้าถึงข้อมูลภายใน Dictionary แบบพื้นฐานและด้วยการใช้คำสั่งวนซ้ำ For loop รวมถึงการใช้งานเมธอดและฟังก์ชันสำหรับจัดการ Dictionary