3.2 การจัดการดิกชันนารี
ดิกชันนารีเป็นชนิดของการเก็บข้อมูลที่มีลักษณะคล้ายกับลิสต์และทูเพิล คือเก็บข้อมูลได้หลาย ๆ ค่าในตัวแปรเดียวกัน
แต่คุณสมบัติพิเศษของดิกชันนารีคือมีข้อมูลตั้งแต่ 2 ค่าขึ้นไปและมีความสัมพันธ์กัน
การจัดการกับดิกชันนารี จึงมีวิธีการหลายอย่างที่แตกต่างจากตัวแปรชนิดอื่นที่ได้กล่าวมา ซึ่งโปรแกรมภาษาไพธอนมีคำสั่งให้เรียกใช้อยู่ภายในไลบรารีอยู่แล้ว
ได้แก่ การประกาศตัวแปร การเพิ่มข้อมูล
การแสดงผลข้อมูล การกำหนดตำแหน่งที่ต้องการ และการสลับตำแหน่งคีย์ของข้อมูล
แต่ทั้งคีย์และข้อมูลจะต้องไปด้วยกัน เช่น ข้อมูลของคีย์ 1 หมายถึง 'one' เท่านั้น
1. โครงสร้างของดิกชันนารี
ดิกชันนารีมีโครงสร้างของข้อมูลที่มีความสัมพันธ์กันแบบหนึ่งต่อหนึ่ง อย่างไร ก็ตามสามารถสร้างดิกชันนารีแบบหนึ่งต่อกลุ่ม และแบบกลุ่มต่อกลุ่มได้ ในกรณีที่เป็นความสัมพันธ์แบบหนึ่งต่อกลุ่มให้ใช้หลักการของลิสต์ได้ แต่ถ้าความสัมพันธ์แบบกลุ่มต่อกลุ่มต้องใช้ลิสต์เป็นคีย์และใช้ทูเพิลเป็นข้อมูล ดังตัวอย่างในภาพที่ 3.7
ดิกชันนารีมีโครงสร้างของข้อมูลที่มีความสัมพันธ์กันแบบหนึ่งต่อหนึ่ง อย่างไร ก็ตามสามารถสร้างดิกชันนารีแบบหนึ่งต่อกลุ่ม และแบบกลุ่มต่อกลุ่มได้ ในกรณีที่เป็นความสัมพันธ์แบบหนึ่งต่อกลุ่มให้ใช้หลักการของลิสต์ได้ แต่ถ้าความสัมพันธ์แบบกลุ่มต่อกลุ่มต้องใช้ลิสต์เป็นคีย์และใช้ทูเพิลเป็นข้อมูล ดังตัวอย่างในภาพที่ 3.7
# one to one relation
>>>
numberDic = {1 :'one', 2:'two',3:'three', 4:'four'}
# one to many
relation
>>> strDic
= { 'teacher' : ['Somchai', 'Somporn', 'Somkid', 'Somsri'],\
'student' : ['Nadia', 'Sofia',
'Abdoll']}
# many to many
relation
>>> numbers
= (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> chars =
('a', 'b', 'c', 'd', 'e', 'f')
>>>
specChar = ('.', '!', '?')
>>>
charSetDic = {numbers:[],chars : [], specChar : []}
|
ภาพที่ 3.7 แสดงคำสั่งเพื่อสร้างดิกชันนารีประเภทต่าง
ๆ
จากภาพที่ 3.7 จะเห็นว่าโครงสร้างของดิกชันนารีไม่เหมือนกับโครงสร้างของลิสต์หรือทูเพิล
ในลักษณะที่ดิกชันนารีจะต้องมีคีย์และข้อมูล เพื่อให้เข้าใจในเรื่องนี้ จะขอยกตัวอย่างจากคำสั่ง
numberDic = {1 : 'one', 2 : 'two', 3 : 'three', 4 : 'four'}
คีย์ ได้แก่ 1, 2, 3, 4
ข้อมูล ได้แก่ 'one', 'two', 'three', 'four'แต่ทั้งคีย์และข้อมูลจะต้องไปด้วยกัน เช่น ข้อมูลของคีย์ 1 หมายถึง 'one' เท่านั้น
2. การเพิ่มข้อมูลเข้าไปในดิกชันนารี
ในการเพิ่มข้อมูลเข้าไปในดิกชันนารี
จะต้องระบุคีย์ที่ต้องการจะป้อนข้อมูลเข้าไปในตำแหน่งของคีย์ใด ในกรณีที่ไม่ตรงกับชื่อคีย์ที่อยู่ในดิกชันนารีเดิม
โปรแกรมภาษาไพธอนจะสร้างคีย์ใหม่ขึ้นมาและจะเก็บข้อมูลนั้นเข้าไปในคีย์นั้น แต่ถ้ามีชื่อคีย์อยู่ในดิกชันนารีอยู่แล้ว ข้อมูลจะเข้าไปแทนที่ข้อมูลเดิมในตำแหน่งของคีย์ที่ระบุ
ซึ่งใช้สำหรับการแก้ไขข้อมูลภายในตัวแปรนั้น ดังตัวอย่างภาพที่ 3.8
>>>
studentDict = {'001' : 'Sofia',
'002' : 'Safeena', '003' : 'Nadia', '004' : 'Abdoll'}
>>>
studentDict['005'] = 'Isamal' # add
>>> print
studentDict
{'003': 'Nadia',
'002': 'Safeena', '001': 'Sofia',
'005': 'Isamal', '004': 'Abdoll'}
>>> studentDict['005']
= 'Jusamin' # update
>>> print
studentDict
{'003': 'Nadia',
'002': 'Safeena', '001': 'Sofia',
'005': 'Jusamin', '004': 'Abdoll'}
|
ภาพที่ 3.8 แสดงคำสั่งและผลลัพธ์การเพิ่มข้อมูลในดิกชันนารี
ข้อมูลในดิกชันนารีสามารถเข้าถึงและให้แสดงผลได้หลายวิธี
วิธีง่าย ๆ ได้แก่ การระบุชื่อคีย์ให้อยู่ในวงเล็บเหลี่ยม
ข้อมูลภายในคีย์จะแสดงออกมา ในกรณีที่เป็นลิสต์อยู่ในดิกชันนารีสามารถใช้เมท็อด values()
ซึ่งเมท็อด values จะส่งข้อมูลในลิสต์ที่อยู่ในดิกชันนารีกลับมาแสดง
ในทำนองเดียวกันสามารถใช้เมท็อด keys() เพื่อให้ส่งชื่อคีย์มาแสดง
การใช้คำสั่งแบบนี้เหมาะสำหรับข้อมูลที่เก็บอยู่ในรูปทูเพิล นอกจากนี้ยังสามารถใช้
เมท็อด items() เพื่อให้แสดงผลทั้งชื่อคีย์และข้อมูลทั้งหมดออกมาแสดง
ดังตัวอย่างในภาพที่ 3.9
>>> person = {'name' : 'Somsak',
'son' : ['Somchai', 'Somkid', 'Sombat'],\
'birthday' : '12-04-2530', 'phoneNo' :
'074-312726'}
>>> print person.keys()
['birthday', 'name', 'phoneNo', 'son']
>>> print person.values()
['12-04-2530', 'Somsak', '074-312726',
['Somchai', 'Somkid', 'Sombat']]
>>> print person.items()
[('birthday', '12-04-2530'), ('name', 'Somsak'),
('phoneNo', '074-312726'), ('son', ['Somchai', 'Somkid', 'Sombat'])]
>>> val =
person["name"]
>>> print val
Somsak
>>> sonVal =
person["son"]
>>> print sonVal
['Somchai', 'Somkid', 'Sombat']
|
ภาพที่ 3.9 แสดงคำสั่งและผลลัพธ์การเข้าถึงดิกชันนารี
4. การกำหนดตำแหน่งข้อมูลของดิกชันนารี
การกำหนดตำแหน่งเพื่อเข้าถึงข้อมูลที่เป็นกลุ่มในดิกชันนารี
ไม่มีวิธีการใด ๆ โดยตรง แต่สามารถใช้เมท็อด keys() เพื่อจัดการเช่นเดียวกับการเข้าถึงข้อมูลแบบลิสต์ จากนั้นให้ใช้ฟังก์ชัน get() เพื่อนำข้อมูลออกมา
หรือถ้าต้องการลบข้อมูลออกให้ใช้ฟังก์ชัน pop()
ดังตัวอย่างตัวอ่างที่ 3.10 >>> year ={1:'January',2:'February',3:'March', 4:'April',\
5:'May', 6:'June', 7:'July',
8:'August',\
9:'September', 10:'October',
11:'November',\
12:'December'}
>>> print
year
{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}
>>> print
year[1]
January
>>> months
= year.keys()
>>>
months.sort()
>>> print
months
[1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12]
>>> print
year.get(1)
January
>>> print
year.pop(12)
December
|
ภาพที่ 3.10 แสดงคำสั่งและผลการกำหนดตำแหน่งดิกชันนารี
ไม่มีความคิดเห็น:
แสดงความคิดเห็น