ข้อมูลประเภท Dictionary ในภาษา Python

Dictionary เป็นประเภทข้อมูลที่ใช้เก็บข้อมูลเป็นคู่ Key-Value โดยจะมีความสามารถในการเข้าถึงข้อมูลได้อย่างรวดเร็ว โดยใช้ Key ในการเข้าถึง Value ที่เก็บอยู่ใน Dictionary

Dictionary ใน Python จะถูกกำหนดด้วยเครื่องหมายวงเล็บปีกกา {} โดยมีคู่ Key-Value ภายในวงเล็บปีกกาและคู่ Key-Value จะถูกคั่นด้วยเครื่องหมายจุลภาค (,) โดยมีรูปแบบดังนี้

dictionary_name = {key1: value1, key2: value2, key3: value3, ...}

โดย key จะต้องเป็นข้อมูลประเภทไม่เปลี่ยนแปลง (immutable) เช่น string หรือ tuple และ value สามารถเป็นข้อมูลประเภทใดก็ได้ เช่น string, number, list หรือ dictionary อีกตัว

ตัวอย่างการกำหนดค่า Dictionary ด้วย Key-Value ที่เป็น string และ number

person = {'name': 'John', 'age': 25, 'address': 'Bangkok'}

ในตัวอย่างนี้มี Key คือ ‘name’, ‘age’ และ ‘address’ และมี Value ตามต่อไปนี้ ‘John’, 25 และ ‘Bangkok’ ตามลำดับ

การเข้าถึงข้อมูล (Access)

การเข้าถึงข้อมูลใน Dictionary ใช้ key เพื่อระบุข้อมูลที่ต้องการ เพราะข้อมูลใน Dictionary จะมีลักษณะเป็น key-value pairs (คู่ของคีย์และค่า) ซึ่ง key จะต้องไม่ซ้ำกัน ดังนั้นเราสามารถเข้าถึงข้อมูลใน Dictionary ได้โดยการใช้ key นั้นๆ เพื่อระบุค่าที่ต้องการ

เพื่อเข้าถึงข้อมูลใน Dictionary ในภาษา Python ให้ใช้วิธีการดังนี้

my_dict = {"name": "John", "age": 30, "city": "New York"}

# การเข้าถึงข้อมูลใน Dictionary
print(my_dict["name"]) # ผลลัพธ์: John
print(my_dict["age"]) # ผลลัพธ์: 30
print(my_dict["city"]) # ผลลัพธ์: New York

 

หากเราใช้ key ที่ไม่มีอยู่ใน Dictionary จะเกิด error ประเภท KeyError ดังนี้

print(my_dict["job"]) # ผลลัพธ์: KeyError: 'job'

 

เราสามารถเช็คว่า key ที่ต้องการเข้าถึงอยู่ใน Dictionary หรือไม่ โดยใช้คำสั่ง in ได้เช่นกัน ดังนี้

if "name" in my_dict:
  print("name is in the dictionary")
else:
  print("name is not in the dictionary")

if "job" in my_dict:
  print("job is in the dictionary")
else:
  print("job is not in the dictionary")

ผลลัพธ์:

name is in the dictionary
job is not in the dictionary

 

การเปลี่ยนข้อมูล (Change)

สามารถเปลี่ยนข้อมูลใน Dictionary โดยการอ้างอิงถึง key และใช้เครื่องหมาย = เพื่อกำหนดค่าใหม่ ดังตัวอย่างนี้

# สร้าง Dictionary ชื่อ person
person = {"name": "John", "age": 30, "city": "New York"}

# เปลี่ยนค่าของ key "age" จาก 30 เป็น 40
person["age"] = 40

# แสดงผล Dictionary person ที่ถูกเปลี่ยนแปลง
print(person)

ผลลัพธ์ที่ได้:

{'name': 'John', 'age': 40, 'city': 'New York'}

 

สามารถเพิ่มข้อมูลใน Dictionary ได้โดยการอ้างอิงถึง key ใหม่ และกำหนดค่าให้กับ key นั้น ดังตัวอย่างนี้

# สร้าง Dictionary ชื่อ person
person = {"name": "John", "age": 30, "city": "New York"}

# เพิ่ม key "country" และกำหนดค่าให้เป็น "USA"
person["country"] = "USA"

# แสดงผล Dictionary person ที่ถูกเพิ่มข้อมูล
print(person)

ผลลัพธ์ที่ได้:

{'name': 'John', 'age': 30, 'city': 'New York', 'country': 'USA'}

 

สามารถใช้เมธอด update() เพื่อเพิ่มหลาย key-value ใน Dictionary ได้ ดังตัวอย่างนี้

# สร้าง Dictionary ชื่อ person
person = {"name": "John", "age": 30, "city": "New York"}

# เพิ่ม key-value ใหม่ใน Dictionary person
person.update({"country": "USA", "gender": "male"})

# แสดงผล Dictionary person ที่ถูกเพิ่มข้อมูล
print(person)

ผลลัพธ์ที่ได้:

{'name': 'John', 'age': 30, 'city': 'New York', 'country': 'USA', 'gender': 'male'}

 

การเพิ่มข้อมูล (Add)

ในภาษา Python การเพิ่มข้อมูลใน Dictionary สามารถทำได้โดยใช้วิธีการกำหนดค่า (Assignment) หรือวิธีการใช้ method update() ก็ได้ ซึ่งการเลือกวิธีการใดก็ขึ้นอยู่กับกรณีการใช้งานและความสะดวกของผู้ใช้งานด้วย

การเพิ่มข้อมูลด้วยการกำหนดค่า (Assignment)

เพื่อเพิ่มข้อมูลใน Dictionary ด้วยวิธีการกำหนดค่า ให้กำหนด key ของข้อมูลที่ต้องการเพิ่มให้กับ Dictionary และกำหนด value ที่เป็นค่าที่ต้องการเพิ่มให้กับ key นั้น ตัวอย่างเช่น

# สร้าง Dictionary ว่าง
my_dict = {}

# เพิ่ม key ชื่อ "apple" และกำหนด value เป็น 50
my_dict["apple"] = 50

# เพิ่ม key ชื่อ "banana" และกำหนด value เป็น 20
my_dict["banana"] = 20

# เพิ่ม key ชื่อ "orange" และกำหนด value เป็น 35
my_dict["orange"] = 35

# แสดงผล Dictionary
print(my_dict)

ผลลัพธ์ที่ได้:

{'apple': 50, 'banana': 20, 'orange': 35}

จะเห็นว่าเมื่อกำหนด key ให้กับ Dictionary แล้ว ถ้า key นั้นมีอยู่แล้วใน Dictionary ก็จะทำการเปลี่ยนค่า value ของ key นั้นด้วย

การเพิ่มข้อมูลด้วย method update()

วิธีการเพิ่มข้อมูลใน Dictionary ด้วย method update() จะเป็นการเพิ่มหรืออัพเดตข้อมูลใน Dictionary โดยรับ parameter เป็น Dictionary หรือ iterable ที่มีคู่ key-value ซึ่ง method update() จะทำการเพิ่ม key-value ใหม่เข้าไปใน Dictionary หรือเปลี่ยนค่า value ของ key ที่มีอยู่แล้วถ้า key นั้นมีอยู่แล้วใน Dictionary

ตัวอย่าง การเพิ่มข้อมูลด้วย method update() ดังนี้

# สร้าง dictionary ว่าง
person = {}

# เพิ่มข้อมูลผู้คนแรกเข้าไปใน dictionary
person["first_name"] = "John"
person["last_name"] = "Doe"
person["age"] = 30
person["city"] = "New York"

# แสดงผล dictionary ก่อนที่จะใช้ method update()
print(person)

# เพิ่มข้อมูลผู้คนที่สองเข้าไปใน dictionary
person.update({
    "first_name": "Jane",
    "last_name": "Doe",
    "age": 28,
    "city": "San Francisco"
})

# แสดงผล dictionary หลังจากใช้ method update()
print(person)

ผลลัพธ์ที่ได้:

{'first_name': 'John', 'last_name': 'Doe', 'age': 30, 'city': 'New York'}
{'first_name': 'Jane', 'last_name': 'Doe', 'age': 28, 'city': 'San Francisco'}

จากตัวอย่าง เราสามารถใช้ method update() เพื่อเพิ่มข้อมูลได้หลายรายการในครั้งเดียวกัน โดยใช้คู่ key-value pairs ซึ่งถูกกล่าวไว้ในเครื่องหมาย {} ใน argument ของ update() method ข้างต้น

การลบข้อมูล (Remove)

การลบข้อมูล (Remove) ข้อมูลประเภท Dictionary ในภาษา Python สามารถทำได้โดยใช้คำสั่ง del หรือ pop() กับ key ที่ต้องการลบข้อมูลออกจาก Dictionary

ตัวอย่างการลบข้อมูลด้วย del:

# สร้าง dictionary ชื่อ my_dict
my_dict = {"apple": 2, "banana": 3, "cherry": 5}

# ลบ key "banana" ออกจาก dictionary
del my_dict["banana"]

# แสดงผล dictionary หลังจากลบ
print(my_dict)
# Output: {'apple': 2, 'cherry': 5}

 

ตัวอย่างการลบข้อมูลด้วย pop():

# สร้าง dictionary ชื่อ my_dict
my_dict = {"apple": 2, "banana": 3, "cherry": 5}

# ลบ key "banana" ออกจาก dictionary ด้วย method pop()
my_dict.pop("banana")

# แสดงผล dictionary หลังจากลบ
print(my_dict)
# Output: {'apple': 2, 'cherry': 5}

 

ในกรณีที่ไม่ระบุ key ที่ต้องการลบด้วย pop() จะลบข้อมูลจาก key ตัวสุดท้ายของ dictionary ออก:

# สร้าง dictionary ชื่อ my_dict
my_dict = {"apple": 2, "banana": 3, "cherry": 5}

# ลบ key ตัวสุดท้ายของ dictionary ออกจาก dictionary ด้วย method pop()
my_dict.pop()

# แสดงผล dictionary หลังจากลบ
print(my_dict)
# Output: {'apple': 2, 'banana': 3}

 

การวนซ้ำข้อมูล (Loop)

ในการวนซ้ำข้อมูลในประเภทข้อมูล Dictionary ในภาษา Python สามารถใช้ for loop ร่วมกับ method items() และ keys() และ values() เพื่อเข้าถึงคีย์ และค่าใน Dictionary ได้ ดังนี้

1. ใช้ for loop ร่วมกับ method items() เพื่อเข้าถึงทั้ง key และ value ของแต่ละรายการใน Dictionary

# ตัวอย่างการวนซ้ำด้วย items() method
my_dict = {"apple": 50, "banana": 20, "orange": 30}

for key, value in my_dict.items():
    print(key, value)

ผลลัพธ์ที่ได้:

apple 50
banana 20
orange 30

 

2. ใช้ for loop ร่วมกับ method keys() เพื่อเข้าถึง key ของแต่ละรายการใน Dictionary

# ตัวอย่างการวนซ้ำด้วย keys() method
my_dict = {"apple": 50, "banana": 20, "orange": 30}

for key in my_dict.keys():
    print(key)

ผลลัพธ์ที่ได้:

apple
banana
orange

 

3. ใช้ for loop ร่วมกับ method values() เพื่อเข้าถึง value ของแต่ละรายการใน Dictionary

# ตัวอย่างการวนซ้ำด้วย values() method
my_dict = {"apple": 50, "banana": 20, "orange": 30}

for value in my_dict.values():
    print(value)

ผลลัพธ์ที่ได้:

50
20
30

การคัดลอกข้อมูล (Copy)

การคัดลอกข้อมูล (Copy) ข้อมูลประเภท Dictionary ในภาษา Python สามารถทำได้โดยใช้ method copy() หรือฟังก์ชั่น dict() เพื่อสร้าง Dictionary ใหม่ที่มีข้อมูลเหมือนกับ Dictionary เดิม โดยไม่เปลี่ยนแปลง Dictionary เดิมที่ถูก copy มาด้วย

ตัวอย่างการ copy ข้อมูล Dictionary ใน Python ด้วย method copy():

# สร้าง Dictionary เดิม
original_dict = {"name": "John", "age": 30, "city": "New York"}

# คัดลอก Dictionary โดยใช้ method copy()
new_dict = original_dict.copy()

# แสดงผลลัพธ์
print("Original Dictionary:", original_dict)
print("New Dictionary:", new_dict)

ผลลัพธ์ที่ได้:

Original Dictionary: {'name': 'John', 'age': 30, 'city': 'New York'}
New Dictionary: {'name': 'John', 'age': 30, 'city': 'New York'}

 

ตัวอย่างการ copy ข้อมูล Dictionary ใน Python ด้วยฟังก์ชั่น dict():

# สร้าง Dictionary เดิม
original_dict = {"name": "John", "age": 30, "city": "New York"}

# คัดลอก Dictionary โดยใช้ฟังก์ชั่น dict()
new_dict = dict(original_dict)

# แสดงผลลัพธ์
print("Original Dictionary:", original_dict)
print("New Dictionary:", new_dict)

ผลลัพธ์ที่ได้:

Original Dictionary: {'name': 'John', 'age': 30, 'city': 'New York'}
New Dictionary: {'name': 'John', 'age': 30, 'city': 'New York'}

 

การซ้อนข้อมูล (Nested)

การ Nested ข้อมูลประเภท Dictionary หมายถึงการใส่ Dictionary ภายใน Dictionary อีกตัว หรือ ใส่ List ภายใน Dictionary อีกตัว เพื่อให้มีการจัดเก็บข้อมูลหลายๆ ชั้น ซึ่งเป็นวิธีการเก็บข้อมูลที่มีความยืดหยุ่นและสามารถอ้างถึงข้อมูลได้อย่างรวดเร็ว

เราสามารถเข้าถึงข้อมูลใน Dictionary ที่ถูก Nested ได้โดยการใช้เครื่องหมาย [ ] หรือ . ในการอ้างถึง Dictionary ภายใน Dictionary หรือ List ภายใน Dictionary โดยกำหนด key ของ Dictionary หรือ index ของ List ตามลำดับจนไปถึงข้อมูลที่ต้องการ

ตัวอย่างการใช้งาน Nested Dictionary:

car = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964,
  "parts": {
    "engine": {
      "type": "V8",
      "horsepower": 400
    },
    "tires": {
      "brand": "Bridgestone",
      "size": "P235/55R17"
    },
    "brakes": {
      "brand": "Brembo",
      "type": "Disc"
    }
  }
}

print(car["parts"]["engine"]["type"])  # ผลลัพธ์คือ "V8"
print(car["parts"]["tires"]["size"])   # ผลลัพธ์คือ "P235/55R17"
print(car["parts"]["brakes"]["brand"]) # ผลลัพธ์คือ "Brembo"

จากตัวอย่างข้างต้น สามารถเห็นได้ว่า ข้อมูลประเภท Dictionary สามารถเก็บข้อมูลซ้อนกันได้แบบไม่จำกัดระดับ ซึ่งนำไปใช้ได้หลากหลาย ตามการจัดเก็บข้อมูลแต่ละแบบและสถานการณ์ที่ต้องการใช้งาน

นอกจากนี้ยังสามารถ Nested ข้อมูลแบบ List ภายใน Dictionary ได้ด้วย ดังตัวอย่างนี้

my_dict = {
  "cars": ["BMW", "Volvo", "Ford"],
  "fruits": ["apple", "banana", "cherry"]
}

print(my_dict)

ผลลัพธ์ที่ได้:

{'cars': ['BMW', 'Volvo', 'Ford'], 'fruits': ['apple', 'banana', 'cherry']}