ดิกชันแนรี
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
นั่นเอง น้องจะยังไม่สามารถเอาข้อมูลที่น้องขอมา เพื่อเอาไปใช้ได้นะครับ