Python – Dictionary
-
การเก็บชุดข้อมูลชนิดดิกชันนารี
การเก็บชุดข้อมูลชนิดดิกชันนารี(Dictionary) เป็นการเก็บชุดข้อมูลในรูปแบบหนึ่ง ซึ่งข้อมูลภายในชุดข้อมูลไม่มีการเรียงลำดับ จะมีความแตกต่างจากรูปแบบการเก็บชุดข้อมูลแบบอื่นๆ โดยการเก็บข้อมูลแบบอื่นเช่นลิสต์(list), เซต(set) นั้น เราจะทำเพียงเก็บค่าของข้อมูลนั้นๆ เอาไว้เช่น ลิสต์ของข้อมูลอุณหภูมิ, เซตของข้อมูลชื่อผลไม้ แต่สำหรับชุดข้อมูลชนิดดิกชันนารี่ ข้อมูลหนึ่งนั้นจะประกอบไปด้วยชื่อข้อมูล(key)ไว้สำหรับอ้างอิงข้อมูล และ ค่าของข้อมูล(value) ถูกเก็บอยู่ด้วยกัน
เนื่องการเก็บชุดข้อมูลชนิดดิกชันนารี(Dictionary) ในข้อมูลแต่ละตัวจะมีทั้งชื่อข้อมูล(key)และค่าของข้อมูล(value) ทำให้ชนิดข้อมูลชนิดนี้มีคุณสมบัติที่ทำให้สามารถค้นหาข้อมูลที่ต้องการโดยอ้างถึงจากชื่อข้อมูล(key)นั้นได้ด้วย
ตัวอย่างข้อมูล เป็นชุดข้อมูลชนิดดิกชันนารีสำหรับเก็บข้อมูลหนังสือเล่มหนึ่ง โดยเมื่อทำการออกแบบระบบสำหรับเก็บข้อมูลและทำการระบุคุณลักษณะข้อมูล จะได้รูปแบบข้อมูลหนังสือแต่ละเล่มมีคุณลักษณะดังนี้:
- ชื่อหนังสือ(name)
- เลข isbn(isbn)
- ชื่อผู้แต่ง(author)
- ชื่อผู้วาดภาพประกอบ(illustrator)
- ชื่อผู้แปล(translator)
- น้ำหนัก(weight)
- ขนาด(size)
- สำนักพิมพ์(publisher)
- วันที่จัดพิมพ์(publish_date)
- จำนวนหน้า(pages)
- ประเภทหนังสือ(category)
- ราคา(price)
ซึ่งเมื่อต้องการสร้างชุดข้อมูลชนิดดิกชันนารีเพื่อระบุข้อมูลของหนังสือเล่มหนึ่ง จะได้เป็นรูปแบบของชุดข้อมูลชนิดดิกชันนารีดังนี้
# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False )) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียดของหนังสือเล่มหนึ่ง book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "translator": "วันเพ็ญ บงกชสถิตย์", "illustrator": "พิมพ์ศศิธร ออสติ", "weight": "0.201 KG", "size": "12.7 × 18.4 × 1.45", "publisher": "นานมีบุ๊คส์", "publish_year": 2561, "pages": 266, "category": ["วรรณกรรม", "วรรณกรรมเยาวชน"], "price": 220 } # ทำการตรวจสอบชนิดของข้อมูลที่เก็บไว้ในตัวแปร print( type(book_detail) ) # โปรแกรมทำการปรินต์ค่า # <type 'dict'> # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "isbn": 9786160436651, # "weight": "0.201 KG", # "price": 220, # "translator": "วันเพ็ญ บงกชสถิตย์", # "pages": 266, # "size": "12.7 × 18.4 × 1.45", # "category": [ # "วรรณกรรม", # "วรรณกรรมเยาวชน" # ], # "publisher": "นานมีบุ๊คส์", # "illustrator": "พิมพ์ศศิธร ออสติ", # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri", # "publish_year": 2561 # }จากตัวอย่าง ได้ทำการกำหนดตัวแปรเพื่อเก็บข้อมูลของหนังสือหนึ่งเล่ม โดยชุดข้อมูลดังกล่าวจะประกอบด้วยข้อมูลย่อยแต่ละตัวที่เป็นคุณลักษณะของหนังสือเล่มดังกล่าว แต่ละคุณลักษณะทุกตัวก็จะประกอบด้วย ชื่อข้อมูล(key)และค่าข้อมูล(value) โดยสำหรับข้อมูลของหนังสือเล่มนี้ หากแจงแจงข้อมูลออกมาในรูปแบบตารางของข้อมูล จะประกอบด้วยชุดของข้อมูลของ ชื่อข้อมูล(key) และ ค่าข้อมูล(value) ดังนี้:
ชื่อข้อมูล(key) ค่าข้อมูล(value) ชื่อหนังสือ(“name”) ไฮดี้(Heidi) เลขอ้างอิงหนังสือ(“isbn”) 9786160436651 ชื่อผู้แต่ง(“author”) Johanna Spyri ผู้แปล(“translator”) วันเพ็ญ บงกชสถิตย์ ภาพประกอบ(“illustrator”) พิมพ์ศศิธร ออสติ น้ำหนัก(“weight”) 0.201 KG ขนาด(“size”) 12.7 × 18.4 × 1.45 สำนักพิมพ์(“publisher”) นานมีบุ๊คส์ ปีที่พิมพ์(“publish_year”) 2561 จำนวนหน้า(“pages”) 266 ประเภทของหนังสือ(“category”) วรรณกรรม, วรรณกรรมเยาวชน ราคา(“price”) 220 -
วิธีการสร้างชุดข้อมูลชนิดดิกชันนารี
การสร้างชุดข้อมูลชนิดดิกชันนารี(dictionary)นั้น จะนำชุดข้อมูลทั้งหมดบรรจุอยู่ภายในเครื่องหมาย “{}” และคั่นข้อมูลแต่ละตัวด้วยเครื่องหมาย “,” โดยข้อมูลแต่ละตัวจะประกอบด้วย ชื่อข้อมูล(key)และค่าของข้อมูล(value) ซึ่งจะคั่นข้อมูลดังกล่าวไว้ด้วยเครื่องหมาย “:” ในรูปแบบ
{ <key>:<value>, <key>:<value> }เราสามารถที่จะใช้ชื่อข้อมูล(key) เพื่อทำการอ้างอิงในการเรียกดูค่าข้อมูล(value) และทำการเปลี่ยนแปลงค่าข้อมูลนั้นๆ ได้อีกด้วย
สำหรับการกำหนดค่าของข้อมูลนั้น ตัวค่าข้อมูล(value)สามารถเป็นข้อมูลชนิดใดก็ได้ แต่สำหรับชื่อข้อมูล(key)นั้น จะต้องเป็นข้อมูลประเภทที่แก้ไข้ข้อมูลไม่ได้(immutable) อย่างเช่น ข้อความ(string), ตัวเลข(number), tuple หรือ frozenset ที่กล่าวถึงในบทที่แล้ว เท่านั้น
สำหรับชื่อข้อมูล(key) ที่ใช้ภายในชุดข้อมูลชนิดดิกชันนารีตัวเดียวกัน จะต้องเป็นข้อมูลที่ไม่ซ้ำกันระหว่างข้อมูลแต่ละตัวด้วย
ตัวอย่างการใช้งาน
# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยยังไม่ทำการระบุข้อมูลใดลงไป book_detail = {} print_dictionary(book_detail) # โปรแกรมทำการปรินต์ค่า # {} # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary(book_detail) # โปรแกรมทำการปรินต์ค่า # { # "price": 220, # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ประเภทหนังสือ(category) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "category": ["วรรณกรรม", "วรรณกรรมเยาวชน"] } # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "category": [ # "วรรณกรรม", # "วรรณกรรมเยาวชน" # ], # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = dict({ "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 }) # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "price": 220, # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = dict([ ("name", "ไฮดี้(Heidi)"), ("isbn", 9786160436651), ("author", "Johanna Spyri"), ("price", 220) ]) # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "price": 220, # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } -
การเข้าถึงข้อมูลในชุดข้อมูลชนิดดิกชันนารี
การเข้าถึงข้อมูลในชุดข้อมูลชนิดดิกชันนารีนั้น จะใช้การอ้างถึงจากชื่อข้อมูล(key) ของข้อมูลแต่ละตัว โดยอาจจะอ้างถึงข้อมูลดังกล่าวผ่านทางเครื่องหมาย “[]” หรือผ่านฟังก์ชัน get()
-
การเข้าถึงชุดข้อมูลชนิดดิกชันนารีโดยใช้เครื่องหมาย “[]”
เราสามารถเข้าถึงข้อมูลโดยการระบุชื่อข้อมูล(key) โดยใช้เครื่องหมาย “[]” แต่หากชื่อข้อมูลดังกล่าวไม่มีอยู่ในชุดข้อมูล โปรแกรมจะเกิดข้อผิดพลาด KeyError เราจึงควรทราบชื่อข้อมูลที่มีอยู่ในชุดข้อมูลก่อนใช้เครื่องหมายดังกล่าว
ตัวอย่างการใช้งาน# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # การเข้าถึงข้อมูลโดยอ้างอิงจากชื่อของข้อมูล(key) โดยใช้เครื่องหมาย "[]" print( book_detail['name'] ) # โปรแกรมทำการปรินต์ค่า # ไฮดี้(Heidi) # การเข้าถึงข้อมูลโดยอ้างอิงจากชื่อของข้อมูล(key) โดยใช้เครื่องหมาย "[]" print( book_detail['pages'] ) # โปรแกรมทำการปรินต์ค่า # KeyError: 'pages' -
การเข้าถึงชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน get()
เราสามารถเข้าถึงข้อมูลโดยการระบุชื่อข้อมูล(key) โดยใช้ฟังก์ชัน get() แต่หากชื่อข้อมูลดังกล่าวไม่มีอยู่ในชุดข้อมูล โปรแกรมจะคืนค่า None โดยไม่เกิดข้อผิดพลาดในระบบ
ตัวอย่างการใช้งาน# กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # การเข้าถึงข้อมูลโดยอ้างอิงจากชื่อของข้อมูล(key) โดยใช้ฟังก์ชัน get() print( book_detail.get('name') ) # โปรแกรมทำการปรินต์ค่า # ไฮดี้(Heidi) # การเข้าถึงข้อมูลโดยอ้างอิงจากชื่อของข้อมูล(key) โดยใช้ฟังก์ชัน get() print( book_detail.get('pages') ) # โปรแกรมทำการปรินต์ค่า # None
-
การเข้าถึงชุดข้อมูลชนิดดิกชันนารีโดยใช้เครื่องหมาย “[]”
-
การเปลี่ยนแปลงชุดข้อมูลชนิดดิกชันนารี
ชุดข้อมูลชนิดดิกชันนารีนั้น เป็นข้อมูลที่สามารถทำการเปลี่ยนแปลงได้(mutable) โดยเราสามารถที่จะ เพิ่ม/แก้ไข ข้อมูลใหม่ลงไปให้กับชุดข้อมูล โดยทำการระบุชื่อข้อมูล(key)แล้วทำการกำหนดค่าโดยใช้เครื่องหมาย “=” หากภายในชุดข้อมูลดังกล่าวมีชื่อข้อมูล(key)ที่ระบุอยู่แล้ว ค่าข้อมูลที่ถูกอ้างอิงจากชื่อข้อมูลดังกล่าวจะถูกแก้ไขเป็นข้อมูลใหม่ แต่ถ้าชื่อข้อมูล(key)ดังกล่าวยังไม่มีอยู่ในชุดข้อมูลเดิมเลย ข้อมูลใหม่ซึ่งประกอบด้วย ชื่อข้อมูล(key)และค่าข้อมูล(value) ก็จะถูกเพิ่มเข้าไปในชุดข้อมูลนั้น
-
การเพิ่มข้อมูลให้กับชุดข้อมูลชนิดดิกชันนารี
ชุดข้อมูลชนิดดิกชันนารีนั้น เป็นข้อมูลที่สามารถทำการเปลี่ยนแปลงได้(mutable) โดยเราสามารถที่จะ เพิ่มข้อมูลใหม่ลงไปให้กับชุดข้อมูล โดยทำการระบุชื่อข้อมูล(key)แล้วทำการกำหนดค่าโดยใช้เครื่องหมาย “=” หากชื่อข้อมูล(key)ดังกล่าวยังไม่มีอยู่ในชุดข้อมูลเดิมเลย ข้อมูลใหม่ซึ่งประกอบด้วย ชื่อข้อมูล(key)และค่าข้อมูล(value) ก็จะถูกเพิ่มเข้าไปในชุดข้อมูลนั้น
ตัวอย่างการใช้งาน# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # ทำการเพิ่มข้อมูลใหม่ ซึ่งเป็นข้อมูลระบุจำนวนหน้าของหนังสือ ให้กับชุดข้อมูลชนิดดิกชันนารี book_detail['pages'] = 266 # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "pages": 266, # "price": 220, # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } # ทำการเพิ่มข้อมูลใหม่ ซึ่งเป็นข้อมูลระบุประเภทของหนังสือ ให้กับชุดข้อมูลชนิดดิกชันนารี book_detail['category'] = ["วรรณกรรม"] # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "category": [ # "วรรณกรรม" # ], # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri", # "price": 220, # "pages": 266 # } -
การแก้ไขข้อมูลให้กับชุดข้อมูลชนิดดิกชันนารี
ข้อมูลประเภทดิกชันนารีนั้นเป็นข้อมูลที่สามารถทำการเปลี่ยนแปลงได้(mutable) โดยเราสามารถเปลี่ยนแปลงข้อมูลเดิม โดยใช้เครื่องหมาย “=” ซึ่งหากในชุดข้อมูลนั้นมีชื่อข้อมูลที่ระบุอยู่แล้ว ค่าของข้อมูลดังกล่าวจะถูกแก้ไขเป็นข้อมูลใหม่
ตัวอย่างการใช้งาน# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price), ประเภทของหนังสือ(category) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "pages": 266, "price": 220, "category": ["วรรณกรรม"] } # ทำการแก้ไขข้อมูลซึ่งเป็นข้อมูลที่ระบุประเภทของหนังสือ ให้กับชุดข้อมูลชนิดดิกชันนารี book_detail['category'] = ["วรรณกรรม", "วรรณกรรมเยาวชน"] # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "category": [ # "วรรณกรรม", # "วรรณกรรมเยาวชน" # ], # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri", # "price": 220, # "pages": 266 # }
-
การเพิ่มข้อมูลให้กับชุดข้อมูลชนิดดิกชันนารี
-
การลบหรือดึงข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี
-
การใช้ฟังก์ชัน pop() เพื่อลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี
เราสามารถดึงข้อมูลที่ต้องการออกจากชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน pop() โดยทำการระบุชื่อข้อมูลที่ต้องการดึงออกมาใหักับฟังก์ชัน โปรแกรมจะทำการลบข้อมูลที่ระบุโดยชื่อของข้อมูล(key)และคืนค่าของข้อมูล(value)นั้นออกมาด้วย
ตัวอย่างการใช้งาน# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price), ประเภทของหนังสือ(category) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "pages": 266, "price": 220, "category": ["วรรณกรรม"] } # ทำการลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี โดยใช้ฟังก์ชัน pop() # แล้วทำการอ้างอิงถึงข้อมูลที่จะลบด้วยชื่อข้อมูล(key) price = book_detail.pop('price') print( price ) # โปรแกรมทำการปรินต์ค่า # 220 # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "category": [ # "วรรณกรรม" # ], # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri", # "pages": 266 # } -
การใช้ฟังก์ชัน popitem() เพื่อลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี
เราสามารถใช้ฟังก์ชัน popitem() เพื่อจะทำการลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี พร้อมทั้งคืนค่า ชื่อข้อมูล(key)และค่าของข้อมูล(value) ที่ทำการลบออกจากดิกชันนารีมาด้วย โดยการใช้ฟังก์ชันดังนี้ ไม่สามารถระบุชื่อข้อมูลที่ต้องการลบ
ตัวอย่างการใช้งาน# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "pages": 266, "price": 220 } # ทำการลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี โดยใช้ฟังก์ชัน popitem() pop_item = book_detail.popitem() print( pop_item ) # โปรแกรมทำการปรินต์ค่า # ('price', 220) # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail) # { # "author": "Johanna Spyri", # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "pages": 266 # } -
การใช้ฟังก์ชัน clear() เพื่อลบข้อมูลทั้งหมดออกจากชุดข้อมูลชนิดดิกชันนารี
หากต้องการลบข้อมูลทั้งหมดออกจากชุดข้อมชนิดดิกชันนารีภายในครั้งเดียวนั้น สามารถจะใช้ฟังก์ชัน clear() เพื่อทำการลบข้อมูลภายในทั้งหมด
ตัวอย่างการใช้งาน# กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "pages": 266, "price": 220 } # ทำการลบข้อมูลทั้งหมดภายในชุดข้อมูลชนิดดิกชันนารี book_detail.clear() print( book_detail ) # โปรแกรมทำการปรินต์ค่า # {} -
การใช้ฟังก์ชัน del() เพื่อลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี
สามารถใช้ฟังก์ชัน del() เพื่อทำการลบเฉพาะข้อมูลที่ระบุ หรือลบข้อมูลตัวแปรดังกล่าว
ตัวอย่างการใช้งาน# -*- coding: utf-8 -*- import json # สร้างฟังก์ชันสำหรับปรินต์ค่าชุดข้อมูลชนิดดิกชันนารี def print_dictionary(data): # ทำการปรินต์ค่า ชุดข้อมูลชนิดดิกชันนารี โดยอาศัยฟังก์ชัน json.dumps() เพื่อให้สามารถ # ปรินท์ค่าข้อความออกมาเป็นภาษาไทยแทนการใช้สัญลักษณ์ ascii ภายใน console print( json.dumps( data, indent=4, ensure_ascii=False ) ) # กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "pages": 266, "price": 220 } # ทำการลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี โดยใช้ฟังก์ชัน del() # และระบุชื่อข้อมูลที่ต้องการลบ del( book_detail['price'] ) # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "pages": 266, # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } # ทำการลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี โดยใช้ฟังก์ชัน del() # และระบุชื่อข้อมูลที่ต้องการลบ del( book_detail['pages'] ) # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # { # "isbn": 9786160436651, # "name": "ไฮดี้(Heidi)", # "author": "Johanna Spyri" # } # ทำการลบข้อมูลตัวแปรที่เก็บชุดข้อมูลชนิดดิกชันนารี โดยใช้ฟังก์ชัน del() del(book_detail) # ทำการปรินต์ค่าชุดข้อมูลชนิดดิกชันนารีโดยใช้ฟังก์ชัน print_dictionary() print_dictionary( book_detail ) # โปรแกรมทำการปรินต์ค่า # NameError: name 'book_detail' is not defined
-
การใช้ฟังก์ชัน pop() เพื่อลบข้อมูลออกจากชุดข้อมูลชนิดดิกชันนารี
-
ฟังก์ชันของชุดข้อมูลชนิดดิกชันนารี
ฟังก์ชัน รายละเอียด clear() ทำการลบข้อมูลทุกตัวออกจากชุดข้อมูลดิกชันนารี copy() คืนค่าการคัดลอกข้อมูลแบบไม่ซับซ้อนมาจากชุดข้อมูลดิกชันนารี fromkeys(seq [,v]) คืนค่าชุดข้อมูลดิกชันนารีใหม่ด้วยการสร้างข้อมูลที่มีชื่อข้อมูล(key)เป็นข้อมูลที่ใส่เข้าไปในตัวแปร seq และค่าข้อมูล(value)ที่ใส่เข้าไปในตัวแปร v (โดยหากไม่ระบุข้อมูลให้ตัวแปร v ค่าตั้งต้นจะเป็น None) get(key [,d]) คืนค่าข้อมูล(value) จากชื่อข้อมูล(key)ที่ระบุเข้าไปให้ตัวแปร key แต่ถ้าชื่อข้อมูล(key)ดังกล่าวไม่มีอยู่ในชุดข้อมูลดิกชันนารี ให้คืนค่าออกมาเป็นข้อมูลที่ระบุไว้ในตัวแปร d (โดยหากไม่ระบุข้อมูลให้ตัวแปร d ค่าตั้งต้นจะเป็น None) items คืนค่าของข้อมูลในชุดข้อมูลชนิดดิกชันนารีออกมาในรูปแบบลิสต์ของ tuple ซึ่งแต่ละ tuple นั้นจะบรรจุข้อมูล ชื่อข้อมูล(key)และค่าข้อมูล(value) keys คืนค่าชื่อข้อมูลในชุดข้อมูลดิกชันนารี ออกมาเป็นรูปแบบ ลิสต์ของชื่อข้อมูล(key)ทั้งหมด ที่ถูกระบุอยู่ในชุดข้อมูลดิกชันนารีเดิม pop(key [,d]) ลบข้อมูลออกจากชุดข้อมูลดิกชันนารี โดยอ้างอิงจากชื่อข้อมูล(key) ที่ระบุให้กับตัวแปร key แล้วทำการคืนค่าของข้อมูล(value)ดังกล่าวออกมา ในกรณีที่ไม่พบข้อมูลจากชื่อข้อมูล(key)ที่ระบุให้คืนค่าที่ระบุในตัวแปร d (แต่หากในชุดข้อมูลดิกชันนารีไม่มีข้อมูลจากชื่อข้อมูล(key)ที่ระบุและไม่ได้กำหนดค่าให้ตัวแปร d อีกด้วย โปรแกรมจะเกิดข้อผิดพลาด keyError) popitem() ทำการลบข้อมูลและคืนค่าข้อมูลที่ลบไปออกมา โดยข้อมูลดังกล่าวจะประกอบด้วย ชุดข้อมูล(key)และค่าของข้อมูล(value) โดยหากชุดข้อมูลชนิดดิกชันนารีดังกล่าวไม่มีข้อมูลบรรจุอยู่เลย จะเกิดข้อผิดพลาดขึ้น setdefault(key [, d]) หากในชุดข้อมูลดิกชันนารีนั้น มีข้อมูลซึ่งระบุด้วยชื่อข้อมูล(key)ในตัวแปร key อยู่แล้ว ให้คืนค่าของข้อมูล(value)นั้นออกมา แต่หากไม่พบข้อมูลจากชื่อข้อมูลที่ระบุ ให้ทำการเพิ่มข้อมูลใหม่เข้าไปในดิกชันนารี ด้วยชื่อข้อมูล(key)ที่ระบุและกำหนดค่าของข้อมูล(value)จากข้อมูลที่ระบุในตัวแปร d แล้วฟังก์ชันจึงจะทำการคืนค่าจากข้อมูลที่ระบุในตัวแปร d (โดยหากไม่ระบุค่าให้ตัวแปร d จะมีค่าตั้งต้นเป็น None) update([other]) ทำการแก้ไขชุดข้อมูลดิกชันนารีด้วยชุดของข้อมูล โดยที่ข้อมูลแต่ละตัวประกอบด้วยชื่อข้อมูล(key)และค่าของข้อมูล(value) ซึ่งระบุไว้ในตัวแปร other หากชื่อข้อมูลที่ระบุ ซ้ำกับชื่อข้อมูลเดิมที่มีอยู่แล้วจะมีการเขียนทับข้อมูลเดิมลงไป values() คืนค่าเฉพาะค่าของข้อมูล(value)ของข้อมูลทั้งหมดซึ่งบรรจุอยู่ในชุดข้อมูลชนิดดิกชันนารี -
การประยุกต์ใช้งานชุดข้อมูลชนิดดิกชันนารี
เราสามารถจะทำการสร้างชุดข้อมูลชนิดดิกชันนารีขึ้นมา จากการวนลูปเพื่อประมวลผลชุดคำสั่งเพื่อสร้างข้อมูลที่ต้องการได้ โดยคำสั่งที่ใช้จะอยู่ในรูปแบบ
ชุดข้อมูลดิกชันนารี = { <ตัวแปรของชื่อข้อมูล>: <คำสั่งสำหรับสร้างข้อมูล> <คำสั่งสำหรับลูป> }ตัวอย่างการใช้งาน
# การสร้างชุดข้อมูลของเลขยกกำลังสอง # x: 2**x , รูปแบบการสร้างชื่อข้อมูล(key) และ ค่าข้อมูล(value) # for x in range(5), รอบของการประมวลผล # สร้างชุดข้อมูลของเลขยกกำลังสอง โดยให้ชื่อข้อมูล(key)เป็นตัวเลข 0-4 # และค่าของข้อมูล(value)เป็นจำนวนยกกำลังสองของชื่อข้อมูลดังกล่าว power_of_two = {x: 2**x for x in range(5) } # ปรินท์ค่าชุดข้อมูลชนิดดิกชันนารีของเลขยกกำลังสอง print( power_of_two ) # โปรแกรมทำการปรินต์ค่า # {0: 1, 1: 2, 2: 4, 3: 8, 4: 16} # โค้ดด้านบนมีค่าเทียบเท่ากับ power_of_two = {} for x in range(5): power_of_two[x] = 2**x print( power_of_two ) # โปรแกรมทำการปรินต์ค่า # {0: 1, 1: 2, 2: 4, 3: 8, 4: 16}การประยุกต์ใช้ชุดข้อมูลชนิดดิกชันนารีดังที่ใช้ไปในตัวอย่างที่แล้ว ในประโยคคำสั่งนั้น เราสามารถจะใส่คำสั่งเพิ่มเติมเช่น for หรือ if ลงไป เพื่อจะทำการกรองข้อมูลให้เฉพาะเจาะจงมากขึ้นได้
ตัวอย่างการใช้งาน# การสร้างชุดข้อมูลของเลขยกกำลังสองจากเฉพาะจำนวนคู่ # x: 2**x , รูปแบบการสร้างชื่อข้อมูล(key) และ ค่าข้อมูล(value) # for x in range(5), รอบของการประมวลผล # if x%2 == 0 ทำการกรองเอาเฉพาะหมายเลขรอบที่เป็นจำนวนคู่ # สร้างชุดข้อมูลของเลขยกกำลังสอง โดยให้ชื่อข้อมูล(key)เป็นตัวเลขคู่ที่มีค่าในช่วง 0-9 # และค่าของข้อมูล(value)เป็นจำนวนยกกำลังสองของชื่อข้อมูลดังกล่าว power_of_two = {x: 2**x for x in range(10) if x%2 == 0} # ปรินท์ค่าชุดข้อมูลชนิดดิกชันนารีของเลขยกกำลังสอง print( power_of_two ) # โปรแกรมทำการปรินต์ค่า # {0: 1, 8: 256, 2: 4, 4: 16, 6: 64} # โค้ดด้านบนมีค่าเทียบเท่ากับ power_of_two = {} for x in range(10): if x%2 == 0: power_of_two[x] = 2**x print( power_of_two ) # โปรแกรมทำการปรินต์ค่า # {0: 1, 8: 256, 2: 4, 4: 16, 6: 64} -
การตรวจสอบว่าข้อมูลที่กำหนดมีอยู่ในชุดข้อมูลชนิดดิกชันนารีหรือไม่
เราสามารถตรวจสอบว่าข้อมูลที่กำหนด เป็นข้อมูลที่ระบุอยู่ในชุดข้อมูลชนิดดิกชันนารีที่ระบุหรือไม่ โดยใช้คีย์เวิร์ด “in” เราสามารถตรวจสอบด้วยวิธีนี้ได้เฉพาะกับส่วนของชื่อข้อมูล(key) แต่เราไม่สามารถใช้คีย์เวิร์ด “in” ในการตรวจสอบว่ามีค่าของข้อมูล(value) อยู่ในชุดข้อมูลชนิดดิกชันนารีหรือไม่
ตัวอย่างการใช้งาน# กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # ใช้คีย์เวิร์ด "in" เพื่อใช้ในการตรวจสอบว่ามีชื่อข้อมูล(key) ดังกล่าวอยู่ในชุดข้อมูล # ชนิดดิกชันนารีหรือไม่ print( 'name' in book_detail ) # โปรแกรมทำการปรินต์ค่า # True # ใช้คีย์เวิร์ด "in" เพื่อใช้ในการตรวจสอบว่ามีชื่อข้อมูล(key) ดังกล่าวอยู่ในชุดข้อมูล # ชนิดดิกชันนารีหรือไม่ print( 'author' in book_detail ) # โปรแกรมทำการปรินต์ค่า # True # ใช้คีย์เวิร์ด "in" เพื่อใช้ในการตรวจสอบว่ามีชื่อข้อมูล(key) ดังกล่าวอยู่ในชุดข้อมูล # ชนิดดิกชันนารีหรือไม่ print( 'pages' in book_detail ) # โปรแกรมทำการปรินต์ค่า # False # ใช้คีย์เวิร์ด "in" เพื่อใช้ในการตรวจสอบว่ามีชื่อข้อมูล(key) ดังกล่าวอยู่ในชุดข้อมูล # ชนิดดิกชันนารีหรือไม่ print( 'pages' not in book_detail ) # โปรแกรมทำการปรินต์ค่า # True # ใช้คีย์เวิร์ด "in" เพื่อใช้ในการตรวจสอบว่ามีชื่อข้อมูล(key) ดังกล่าวอยู่ในชุดข้อมูล # ชนิดดิกชันนารีหรือไม่ print( "Johanna Spyri" in book_detail ) # โปรแกรมทำการปรินต์ค่า # False -
การวนลูปเพื่อดึงข้อมูลในชุดข้อมูลดิกชันนารี
เราสามารถใช้ for…loop ในการวนลูปเพื่อดึงชื่อข้อมูล(key) ทั้งหมด จากชุดข้อมูลชนิดดิกชันนารี แล้วค่อยใช้ชื่อข้อมูลดังกล่าวในการเข้าถึงค่าข้อมูลต่อไป
ตัวอย่างการใช้งาน# กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # ทำการวนลูปเพื่อดึงชื่อข้อมูลจากชุดข้อมูลชนิดดิกชันนารี for key in book_detail: print("ชื่อข้อมูล(key): {0}, ค่าของข้อมูล(value): {1}".format(key, book_detail[key]) ) # โปรแกรมทำการปรินต์ค่า # ชื่อข้อมูล(key): author, ค่าของข้อมูล(value): Johanna Spyri # ชื่อข้อมูล(key): isbn, ค่าของข้อมูล(value): 9786160436651 # ชื่อข้อมูล(key): name, ค่าของข้อมูล(value): ไฮดี้(Heidi) # ชื่อข้อมูล(key): price, ค่าของข้อมูล(value): 220 -
ฟังก์ชันที่สามารถใช้งานร่วมกับข้อมูลชนิดดิกชันนารี
ฟังก์ชันที่ใช้งานได้กับข้อมูลประเภทดิกชันนารีเช่น all(), any(), len(), cmp(), sorted(), etc. นั้นถูกใช้กับข้อมูลชนิดดิกชันนารีเพื่อดำเนินการต่างกันไป
ฟังก์ชัน รายละเอียด all() คืนค่าจริง(True) ถ้าชื่อข้อมูล(key) ทั้งหมดของชุดข้อมูลชนิดดิกชันนารีมีค่าเป็นจริง(True) หรือไม่มีข้อมูลบรรจุอยู่ในดิกชันนารี any() คืนค่าจริง(True) ถ้าชื่อข้อมูล(key) ใดข้อมูลหนึ่งของชุดข้อมูลชนิดดิกชันนารีมีค่าเป็นจริง(True) ในกรณีที่ไม่มีข้อมูลบรรจุอยู่ในดิกชันนารีจะคืนค่าเท็จ(False) len() คืนค่าจำนวนของสมาชิกของข้อมูล ที่บรรจุอยู่ในชุดข้อมูลชนิดดิกชันนารี cmp() ผลการเปรียบเทียบข้อมูลระหว่างชุดข้อมูลชนิดดิกชันนารีสองข้อมูล sorted คืนค่าลิสต์ของชื่อข้อมูล(key)ที่ถูกทำการเรียงลำดับแล้ว โดยใช้ข้อมูลจากชื่อข้อมูลดังกล่าวในการเรียงลำดับ ตัวอย่างการใช้งาน
# กำหนดตัวแปรเพื่อเก็บชุดข้อมูลชนิดดิกชันนารี เพื่อเก็บข้อมูลรายละเอียด # ของหนังสือเล่มหนึ่ง โดยระบุข้อมูลชื่อหนังสือ(name), เลขอ้างอิงหนังสือ(isbn), # ชื่อผู้แต่ง(author), ราคา(price) book_detail = { "name": "ไฮดี้(Heidi)", "isbn": 9786160436651, "author": "Johanna Spyri", "price": 220 } # ทำการตรวจสอบจำนวนของคุณลักษณะที่กำหนดให้ข้อมูลหนังสือที่ระบุ print( len(book_detail) ) # โปรแกรมทำการปรินต์ค่า # 4 # ทำการปรินต์ลิสต์ของชื่อข้อมูล(key) ที่กำหนดให้ข้อมูลหนังสือที่ระบุก่อนทำการเรียงลำดับ print(book_detail.keys()) # โปรแกรมทำการปรินต์ค่า # ['price', 'isbn', 'name', 'author'] # ทำการเรียงลำดับคุณลักษณะของหนังสือจากชื่อของข้อมูล(key) ที่ระบุ sorted_book_detail = sorted(book_detail) print( sorted_book_detail ) # โปรแกรมทำการปรินต์ค่า # ['author', 'isbn', 'name', 'price']
ที่มาของข้อมูลหนังสือ:
https://www.nanmeebooks.com/heidi.html
https://www.naiin.com/product/detail/232954
ภาพหนังสือ:
https://www.nanmeebooks.com/heidi.html

