คู่มือครบ Python Dictionary (ดิกชันนารี): พื้นฐานถึงขั้นสูง

1. แอสโซซิเอทีฟอาเรย์ (พจนานุกรม) ใน Python คืออะไร?

แอสโซซิเอทีฟอาเรย์ของ Python เป็นโครงสร้างข้อมูลที่ใช้คู่คีย์-ค่าเพื่อจัดการข้อมูล โดยทั่วไปสิ่งที่เรียกว่า “แอสโซซิเอทีฟอาเรย์” ใน Python มีให้ใช้งานเป็นชนิด dict ตัวอย่างเช่น ใช้ชื่อเป็นคีย์ และเก็บอายุหรืออาชีพเป็นค่า จะช่วยให้การค้นหาและการจัดการข้อมูลทำได้อย่างมีประสิทธิภาพ ที่นี่ “คีย์” คือ ตัวระบุเฉพาะเพื่อระบุข้อมูล และแต่ละคีย์ต้องไม่ซ้ำกัน

ความแตกต่างระหว่างชนิดพจนานุกรมกับโครงสร้างข้อมูลอื่นๆ

จุดเด่นของชนิดพจนานุกรมคือการค้นหาที่รวดเร็วด้วยคีย์ เมื่อเทียบกับชนิดลำดับอย่างลิสต์หรือทูเพิลใน Python แทนที่จะค้นหาทีละองค์ประกอบตามลำดับ สามารถเข้าถึงด้วยคีย์โดยตรง ทำให้ความเร็วในการค้นหาดีขึ้นอย่างมาก โดยเฉพาะเมื่อจัดการข้อมูลจำนวนมากหรือมีการค้นหาบ่อยๆ ชนิดพจนานุกรมมีประโยชน์อย่างยิ่ง
# ตัวอย่างของชนิดพจนานุกรม
person = {
    "ชื่อ": "ทานากะ",
    "อายุ": 30,
    "อาชีพ": "วิศวกร"
}
print(person["ชื่อ"])  # ผลลัพธ์: ทานากะ

2. วิธีสร้างดิกชันนารีใน Python

ใน Python เราสามารถสร้างดิกชันนารีได้หลายวิธี สามารถเลือกวิธีที่เหมาะสมตามสถานการณ์ เช่น การเขียนแบบลิเทอรัล、dict() ฟังก์ชัน、zip() ฟังก์ชัน

วิธีสร้างด้วยลิเทอรัล

การเขียนแบบลิเทอรัลคือวิธีที่ใช้วงเล็บปีกกา {} ในการสร้าง ซึ่งเป็นวิธีที่พบได้บ่อยและเรียบง่ายที่สุด เมื่อใช้ลิเทอรัล คุณสามารถกำหนดคีย์และค่าได้ในบรรทัดเดียว และสร้างดิกชันนารีได้อย่างเข้าใจง่าย
# การเขียนแบบลิเทอรัล
fruit_prices = {
    "แอปเปิล": 100,
    "กล้วย": 150,
    "ส้ม": 200
}

dict() ฟังก์ชันที่ใช้ในการสร้าง

dict() ฟังก์ชัน มีประโยชน์เมื่อสร้างดิกชันนารีจากลิสต์ของทูเพิล เป็นต้น วิธีนี้ใช้งานได้สะดวกเป็นพิเศษเมื่อข้อมูลมีการเปลี่ยนแปลงแบบไดนามิก
# ฟังก์ชัน dict
fruit_prices = dict([("แอปเปิล", 100), ("กล้วย", 150), ("ส้ม", 200)])

zip() ฟังก์ชันที่ใช้ในการสร้าง

เมื่อสร้างดิกชันนารีโดยจับคู่ลิสต์ต่างๆ ให้เป็นคีย์และค่า สามารถใช้ฟังก์ชัน zip() เพื่อทำได้อย่างกระชับ วิธีนี้ช่วยให้สร้างดิกชันนารีจากลิสต์ที่สอดคล้องกันได้อย่างมีประสิทธิภาพ
# ฟังก์ชัน zip
keys = ["แอปเปิล", "กล้วย", "ส้ม"]
values = [100, 150, 200]
fruit_prices = dict(zip(keys, values))

3. การดำเนินการพื้นฐานกับดิกชันนารี

ดิกชันนารีของ Python เป็นโครงสร้างข้อมูลแบบมิวเทเบิลที่ช่วยให้เพิ่ม อัปเดต และลบข้อมูลได้อย่างยืดหยุ่น。 นอกจากนี้ เมื่อเทียบกับโครงสร้างข้อมูลอื่น ๆ แล้ว ดิกชันนารีมีจุดเด่นคือค้นหาได้รวดเร็ว。

การเพิ่มและอัปเดตรายการ

ในการเพิ่มหรืออัปเดตรายการในดิกชันนารี เพียงระบุคีย์แล้วกำหนดค่าให้ก็เพียงพอ。 หากกำหนดค่าให้กับคีย์ที่มีอยู่จะเป็นการอัปเดต และหากระบุคีย์ใหม่จะเป็นการเพิ่มรายการใหม่。
fruit_prices = {"แอปเปิล": 100, "กล้วย": 150}
# การเพิ่มรายการใหม่
fruit_prices["ส้ม"] = 200
# การอัปเดตรายการที่มีอยู่
fruit_prices["แอปเปิล"] = 120

การลบรายการ

เมื่อต้องการลบรายการที่มีคีย์ที่กำหนด สามารถใช้คำสั่ง del หรือเมธอด pop() ได้。 เมธอด pop() จะคืนค่าที่ถูกลบ จึงมีประโยชน์หากต้องการเก็บค่าที่ลบไว้。
# การลบโดยใช้คำสั่ง del
del fruit_prices["กล้วย"]
# การลบโดยใช้เมธอด pop (สามารถรับค่าที่ลบได้)
removed_price = fruit_prices.pop("ส้ม")

4. การใช้งานขั้นสูง

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

การรวมดิกชันนารี

เมื่อจะรวมดิกชันนารีหลายตัวให้เป็นหนึ่งเดียว เมธอดupdate()จะมีประโยชน์ หากมีคีย์ซ้ำ ค่าจะถูกเขียนทับ จึงสามารถทำการผสานหรืออัปเดตข้อมูลได้ในคราวเดียว
dict1 = {"แอปเปิล": 100, "กล้วย": 150}
dict2 = {"กล้วย": 200, "องุ่น": 300}
dict1.update(dict2)
# ผลลัพธ์: {'แอปเปิล': 100, 'กล้วย': 200, 'องุ่น': 300}

การประยุกต์ใช้สำหรับการนับความถี่

การนับความถี่มีประโยชน์ เช่น ในการนับจำนวนครั้งที่อักขระปรากฏในสตริง เมื่อใช้ชนิดดิกชันนารี จะสามารถรวบรวมและวิเคราะห์ข้อมูลได้อย่างมีประสิทธิภาพ
text = "apple"
frequency = {}
for char in text:
    if char in frequency:
        frequency[char] += 1
    else:
        frequency[char] = 1
# ผลลัพธ์: {'a': 1, 'p': 2, 'l': 1, 'e': 1}

5. การวนลูปกับพจนานุกรม

หากต้องการประมวลผลองค์ประกอบทั้งหมดของพจนานุกรมในครั้งเดียว การวนลูปเหมาะสม ด้วยวิธีนี้ คุณสามารถจัดการคีย์หรือค่าแยกกัน หรือดึงรายการข้อมูลได้

ดึงคีย์และค่าด้วยการวนลูป

ในการประมวลผลคีย์ ค่า หรือคู่คีย์-ค่าภายในพจนานุกรม ให้ใช้เมธอด keys(), values(), items()
fruit_prices = {"แอปเปิล": 100, "กล้วย": 150, "ส้ม": 200}
# เฉพาะคีย์
for key in fruit_prices.keys():
    print(key)
# เฉพาะค่า
for value in fruit_prices.values():
    print(value)
# คู่คีย์และค่า
for key, value in fruit_prices.items():
    print(f"ราคาของ {key} คือ {value} เยน")

6. สรุปพจนานุกรมของ Python

พจนานุกรมของ Python (อาร์เรย์เชิงสัมพันธ์) จัดการข้อมูลเป็นคู่คีย์และค่า ซึ่งช่วยให้ประสิทธิภาพในการค้นหาและการดำเนินการดีขึ้นอย่างมาก เมื่อเทียบกับลิสต์หรือทูเพิล การค้นหามีความรวดเร็ว จึงได้เปรียบเมื่อต้องจัดการข้อมูลจำนวนมาก นอกจากนี้ ยังเหมาะกับการสรุปผลและการวิเคราะห์ข้อมูล รวมถึงการใช้งานร่วมกับโครงสร้างข้อมูลอื่นๆ จึงกล่าวได้ว่าเป็นองค์ประกอบที่ขาดไม่ได้ในการจัดการข้อมูลพื้นฐานของ Python เมื่อคุ้นเคยกับการใช้งานชนิดข้อมูลแบบพจนานุกรม จะสามารถทำการประมวลผลข้อมูลขั้นสูงได้มากยิ่งขึ้น