ดิกชันแนรี

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

โดย Dictionary จะมีข้อมูลอยู่ 2 ประเภท นั่นคือ

  • Key (พูดง่ายๆก็คือตัวแปร)
  • Value (พูดง่ายๆก็คือค่าที่อยู่ในตัวแปร)

แต่ว่า Dictionary สามารถเก็บข้อมูล (Key และ Value) ได้หลายๆอัน ทำให้น้องๆสามารถเรียกค่า (Key) เพื่อเอาผลลัพท์ (Value) ได้

โดยน้องๆมีหลาย Key ก็ได้ แต่อาจจะไม่มี Value (ก็คือปล่อยให้ค่า Value เป็น None หรือว่า Null)


สร้าง dictionary

สร้าง Dictionary เปล่าๆ

น้องสามารถสร้างตัว Dictionary ใหม่โดยการใช้ฟังก์ชั่น dict() เพื่อเปลี่ยนตัวแปรให้เก็บข้อมูลแบบ Dictionary และสร้่าง dictionary เปล่าๆขึ้นมา 1 อัน

ตัวอย่างการเขียน

my_dictionary = dict()

สร้าง dictionary โดยการเขียนเอง

โดยฝั่งซ้ายจะเป็นค่า key และฝั่งขวาจะเป็นค่า value

my_dictionary = {
"happy" : 20,
"not happy" : 30,
"sad" : False
}

my_dictionary = {"happy" : 20, "not happy" : 30, "sad" : False}

โดยน้องๆอาจจะเขียนแบบที่ 1 ที่จะแยกบรรทัด หรือเขียนแบบบรรทัดเดียวกันก็ได้ครับ

แต่เขียนไปเป็นหลายบรรทัด น้องๆจะอ่านมันได้ง่ายขึ้นครับ จึงเหมาะกับน้องๆที่ไม่ชอบอ่านโค้ดยากๆ ยาวๆ


เรียกข้อมูลมาจาก Dictionary

แบบเหมือน Lists

ก็สามารถเรียกเหมือน List ได้เลย แต่การเรียกจะใส่เป็น Key แทน ไม่เหมือน List ที่จะใส่เป็นลำดับของข้อมูล

my_dictionary['happy'] # Returns 20

หรือน้องๆอาจจะเช็คก่อนว่ามี key นั้นๆอยู่หรือเปล่าโดยการใช้ keyword in

"happy" in my_dictionary # Return true
20 in my_dictionary # Return true

หากคืนกลับมาเป็น True (เหมือนกับตัวอย่าง) ก็จะบอกได้ว่ามี Key ที่ชื่อนั้นอยู่ใน dictionary นั้นๆ

แบบใช้ methods

ในแบบนี้ น้องๆก็จะได้ใช้ .get() และ .setdefault() ทำให้น้องๆอาจจะจัดการกับ Key ที่ไม่เคยอยู่จริงก็ได้ครับ

การใช้ .get() ก็เหมือนกับการเรียกถามหา Value จากค่า Key ที่น้องให้มาเลย แต่จะแตกต่างออกไปคือ หากว่ามันหาแล้วไม่เจอ ก็จะคืนค่า None กลับมาแทน

ตัวอย่างเช่น

my_dict.get('Kuma')

แต่หากว่าน้องๆไม่ต้องการที่จะขอคืนเป็น Null ก็สามารถใส่ Parameter default เข้าไปด้วยก็ได้ครับ เช่นว่า หากไม่เจอ ก็ให้คืนเป็น 0

my_dict.get('Kuma', default = 0)

และสำหรับ .setdefault() ก็จะเหมือนกับ .get() เลย แต่ว่าจะใส่ค่าที่น้องเคยหาเข้าไปใน dictionary ด้วย เหมือนมันสร้างว่า key ที่น้องหา เท่ากับ None แล้วก็เอาไปเก็บไว้ใน dictionary แล้วก็ค่อยเรียกค่านั้นอีกรอบ


เพื่มค่าเข้าใปใน Dictionary

ถ้าน้องๆต้องการเพื่มค่าเข้าไปใน Dictionary ก็สามารถทำการเพื่ม ด้วยการเขียน

<variableName>[<key>] = <value>

เช่นว่าพี่ต้องการบอกให้ kumamon = 12 และไปอยู่ในตัวแปร dictionary ที่ชื่อว่า my_dict ก็จะเขียนได้ดังนี้ครับ

my_dict['kumamon'] = 12

ลบค่าออกจาก Dictionary

โดยน้องๆสามารถที่จะลบ

  • ทุกตัว
  • ตัวที่น้องเลือก
  • ลบความเป็น Dictionary ออกไป

ลบค่าบางตัวออกจาก Dictionary

น้องๆสามารถใช้ keyword del เพื่อทำการลบค่าออกไปครับ ตัวอย่างเช่น

del my_dict['Kumamon']

มันก็จะทำการลบค่า Key + Value ที่ Key มีค่าเท่ากับ 'Kumamon' ออกไป
เหมือนกับว่ามันไม่เคยเกิดขึ้นมาก่อนเลย

ลบค่าทุกตัวออกจาก Dictionary

น้องๆสามารถใช้ method .clear() เพื่อทำการล้างค่า Key + Value ออกไป ทำให้ตัวแปรเป็น Dictionary เปล่าๆ

ตัวอย่างการเขียน

my_dict.clear()

ลบความเป็น Dictionary ออกไป

เหมือนทำให้ตัวแปรนั้นเก็บเป็นค่า None ไปเลย พูดง่ายๆก็คือที้งมันไปเลย โดยการใช้ keyword del

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

del my_dict

ก็จะทำให้เวลาน้องเรียกตัวแปร my_dict ก็จะขึ้นแบบน้ีครับ

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'mydict' is not defined

เพราะการใช้ del เป็นการลบตัวแปรออกไปเลย ไม่เหมือนการเขียน my_dict = None นะครับ เพราะว่าอันนั้น ตัวแปรยังอยู่


เช็คค่า Keys และ Values ที่อยู่ใน Dictionary

น้องๆสามารถใช้ .keys() สำหรับการดูค่า keys ทั้งหมดใน Dictionary
และใช้ .values() เพื่อดูค่า values ทั้งหมดใน Dictionary

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

my_dictionary = {"happy" : 20, "not happy" : 30, "sad" : False}

print(my_dictionary.keys())
print(my_dictionary.values())

ก็จะออกมาเป็น

dict_keys(['happy', 'not happy', 'sad'])
dict_values([20, 30, False])

โดยมันคืนออกมาเป็นตัวแปรประเภท dict_keys และ dict_values นั่นเอง น้องจะยังไม่สามารถเอาข้อมูลที่น้องขอมา เพื่อเอาไปใช้ได้นะครับ

แก้ไขล่าสุด:
เขียนโดย: Kunanon Srisuntiroj