วันอาทิตย์ที่ 26 กุมภาพันธ์ พ.ศ. 2560

3.2 การจัดการดิกชันนารี

3.2 การจัดการดิกชันนารี

ดิกชันนารีเป็นชนิดของการเก็บข้อมูลที่มีลักษณะคล้ายกับลิสต์และทูเพิล  คือเก็บข้อมูลได้หลาย ๆ ค่าในตัวแปรเดียวกัน แต่คุณสมบัติพิเศษของดิกชันนารีคือมีข้อมูลตั้งแต่ 2 ค่าขึ้นไปและมีความสัมพันธ์กัน การจัดการกับดิกชันนารี จึงมีวิธีการหลายอย่างที่แตกต่างจากตัวแปรชนิดอื่นที่ได้กล่าวมา   ซึ่งโปรแกรมภาษาไพธอนมีคำสั่งให้เรียกใช้อยู่ภายในไลบรารีอยู่แล้ว ได้แก่ การประกาศตัวแปร  การเพิ่มข้อมูล การแสดงผลข้อมูล การกำหนดตำแหน่งที่ต้องการ และการสลับตำแหน่งคีย์ของข้อมูล

1. โครงสร้างของดิกชันนารี
                ดิกชันนารีมีโครงสร้างของข้อมูลที่มีความสัมพันธ์กันแบบหนึ่งต่อหนึ่ง อย่างไร  ก็ตามสามารถสร้างดิกชันนารีแบบหนึ่งต่อกลุ่ม และแบบกลุ่มต่อกลุ่มได้ ในกรณีที่เป็นความสัมพันธ์แบบหนึ่งต่อกลุ่มให้ใช้หลักการของลิสต์ได้ แต่ถ้าความสัมพันธ์แบบกลุ่มต่อกลุ่มต้องใช้ลิสต์เป็นคีย์และใช้ทูเพิลเป็นข้อมูล ดังตัวอย่างในภาพที่ 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  แสดงคำสั่งและผลลัพธ์การเพิ่มข้อมูลในดิกชันนารี

3. การนำข้อมูลดิกชันนารีแสดงผล
            ข้อมูลในดิกชันนารีสามารถเข้าถึงและให้แสดงผลได้หลายวิธี วิธีง่าย ๆ ได้แก่ การระบุชื่อคีย์ให้อยู่ในวงเล็บเหลี่ยม ข้อมูลภายในคีย์จะแสดงออกมา ในกรณีที่เป็นลิสต์อยู่ในดิกชันนารีสามารถใช้เมท็อด 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  แสดงคำสั่งและผลการกำหนดตำแหน่งดิกชันนารี

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...