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

Python – สร้าง Dictionary จาก List

บทความนี้สาธิตวิธีสร้าง Dictionary จาก List โดยใช้เมธอด setdefault() เพื่อจัดกลุ่มค่าตามคีย์ที่กำหนด

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

# สร้าง Dictionary ว่าง
my_dict = dict()
print("สร้าง Dictionary ว่างแล้ว")

# ลิสต์ค่า (เป็นสตริงตัวเลข)
my_value_list = ['15', '14', '13', '12', '16']
print(f"ลิสต์ต้นฉบับ: {my_value_list}")

# เรียงลำดับ
my_value_list.sort()
print(f"ลิสต์หลังเรียง: {my_value_list}")

# สร้าง Dictionary
# คีย์ = ตัวเลขจากลิสต์ และตัวเลข+1
# ค่า = ลิสต์ของค่าต้นฉบับที่สร้างคีย์นั้นได้
for value in my_value_list:
    num = int(value)
    for element in range(num, num + 2):  # num และ num+1
        my_dict.setdefault(element, []).append(value)

print("\nDictionary ผลลัพธ์:")
print(my_dict)

ผลลัพธ์

{12: ['12'], 13: ['12', '13'], 14: ['13', '14'], 15: ['14', '15'], 16: ['15', '16'], 17: ['16']}

อธิบาย Logic

สำหรับค่าแต่ละค่าในลิสต์ (เช่น '12'):

  • แปลงเป็น int → 12
  • สร้างคีย์ 12 และ 13 (range(12, 14))
  • เพิ่มค่า '12' เข้าไปในลิสต์ของคีย์ 12 และ 13

setdefault(key, []) จะ:

  • ถ้าคีย์ยังไม่มี → สร้างคีย์ใหม่พร้อมลิสต์ว่าง แล้วคืนค่าลิสต์นั้น
  • ถ้าคีย์มีอยู่แล้ว → คืนค่าลิสต์เดิม
  • จากนั้น .append(value) เพิ่มค่าเข้าไปในลิสต์นั้น

รูปแบบอื่น: Dictionary Comprehension

# ถ้าต้องการแค่ Map ค่า → Index
my_list = ['15', '14', '13', '12', '16']
my_dict = {int(v): i for i, v in enumerate(my_list)}
print(my_dict)
# {15: 0, 14: 1, 13: 2, 12: 3, 16: 4}

การประยุกต์ใช้ setdefault()

  • การจัดกลุ่มข้อมูล (Grouping) โดยไม่ต้องเช็ค key มีอยู่ก่อน
  • การสร้าง Inverted Index
  • การนับความถี่แบบจัดกลุ่ม