ดิกชันนารีเป็นคอลเลกชันที่ไม่มีลำดับ เปลี่ยนแปลงได้ และมีดัชนี เขียนด้วยวงเล็บปีกกา มีคีย์และค่า เข้าถึงได้โดยระบุคีย์ในวงเล็บเหลี่ยม
ตัวอย่างโค้ด
1. เพิ่มลิสต์เป็นค่าโดยตรง
myDict = {}
myDict["key1"] = [1, 2]
myDict["key2"] = ["Vishesh", "For", "Python"]
print(myDict)
2. เพิ่มลิสต์เป็น Sublist (Nested List)
myDict = {}
myDict["key1"] = [1, 2]
lst = ['vishesh', 'For', 'python']
myDict["key1"].append(lst) # เพิ่มลิสต์เข้าไปเป็นสมาชิก
print(myDict)
3. ใช้ setdefault() สร้างอัตโนมัติ
myDict = dict()
valList = ['1', '2', '3']
for val in valList:
for ele in range(int(val), int(val) + 2):
myDict.setdefault(ele, []).append(val)
print(myDict)
4. ใช้ Dictionary Comprehension
d = dict((val, range(int(val), int(val) + 2)) for val in ['1', '2', '3'])
print(d)
ผลลัพธ์
{'key2': ['Vishesh', 'For', 'Python'], 'key1': [1, 2]}
{'key1': [1, 2, ['vishesh', 'For', 'python']]}
{1: ['1'], 2: ['1', '2'], 3: ['2', '3'], 4: ['3']}
{'1': [1, 2], '3': [3, 4], '2': [2, 3]}
สรุปและแนวทางปฏิบัติที่ดี
ใช้ defaultdict จาก collections (แนะนำ)
from collections import defaultdict
# สร้าง dict ที่ค่า default เป็น list
my_dict = defaultdict(list)
my_dict["key1"].append(1)
my_dict["key1"].append(2)
my_dict["key2"].extend(["Vishesh", "For", "Python"])
print(dict(my_dict))
# {'key1': [1, 2], 'key2': ['Vishesh', 'For', 'Python']}
เปรียบเทียบวิธีการ
| วิธี | เหมาะสำหรับ | หมายเหตุ |
|---|---|---|
| Direct assignment | ค่าคงที่ รู้คีย์ล่วงหน้า | ง่ายที่สุด |
| setdefault() | สร้างคีย์อัตโนมัติถ้ายังไม่มี | ต้องเรียกทุกครั้ง |
| defaultdict(list) | เพิ่มค่าบ่อย ไม่รู้คีย์ล่วงหน้า | สะดวกที่สุด แนะนำ |
| Dict comprehension | สร้างจากข้อมูลมีอยู่แล้ว | กระชับ Pythonic |
การเข้าถึงข้อมูล
# เพิ่มค่า
my_dict["new_key"].append("value")
# อ่านค่า (ปลอดภัย)
values = my_dict.get("key", []) # คืน [] ถ้าไม่มีคีย์
# วนลูป
for key, value_list in my_dict.items():
print(key, value_list)