Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - วิธีสร้าง Dictionary ที่มีค่าเป็น List

ดิกชันนารีเป็นคอลเลกชันที่ไม่มีลำดับ เปลี่ยนแปลงได้ และมีดัชนี เขียนด้วยวงเล็บปีกกา มีคีย์และค่า เข้าถึงได้โดยระบุคีย์ในวงเล็บเหลี่ยม

ตัวอย่างโค้ด

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)