Dictionaries (พจนานุกรม)#

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับโครงสร้างข้อมูล Dictionary ในภาษา Python เราจะแนะนำให้คุณรู้จักกับ Dictionary การประกาศและการใช้งาน นอกจากนี้ เรายังจะแนะนำการใช้งานเมธอดและ built-in functions ของ Dictionary และตัวอย่างการใช้งานกับการเขียนโปรแกรมในรูปแบบต่างๆ ในภาษา Python

Ref:

Dictionaries คือ?#

\(\qquad\) Dictionary เป็นข้อมูลประเภท Collections (หรือ Container) เช่นเดียวกับ List แต่จัดเก็บชุดข้อมูลแบบไม่เรียงลำดับ (non-sequential collections) โดยข้อมูลที่จัดเก็บอยู่ในรูปแบบของ Key-Value เป็นคู่ๆ (เทียบได้กับ HashMap ในภาษา Java หรือ โครงสร้างข้อมูลยอดฮิตแบบ JSON)

  • Key: (คีย์) ระบุชื่อของข้อมูลสำหรับอ้างอิง,

  • Value: (แวลยูว) เป็นค่าของข้อมูล (information) ที่ต้องการเก็บ

มักจะใช้เก็บข้อมูลซึ่งมีขนาดใหญ่และจำเป็นต้องมีการค้นหาข้อมูล (ข้อมูลชนิดนี้จัดเก็บในรูปแบบของ Key-Value เป็นคู่ๆ เหมือนพจนานุกรมจริงๆ สอดคล้องกับชื่อ Dictionary !) โดย Key เป็นออบเจกต์/ข้อมูลที่แก้ไขไม่ได้ (Immutable type) เช่น สตริง (str) ตัวเลข(int, float) และทูเพิล (tuple) ดังนั้น คุณไม่สามารถใช้ออบเจกต์/ข้อมูลที่แก้ไขได้ (Mutable type) เช่น ลิสต์ (list) Dictionary (dict) เป็น Key ได้ (Dictionary เป็นชนิดข้อมูลที่แก้ไขได้) ในทางกลับกัน Value เป็นออบเจกต์/ข้อมูลชนิดใดก็ได้ จะแก้ไขได้หรือไม่ได้ก็ได้

รูปด้านล่างเปรียบเทียบระหว่าง List กับ Dictionary

List ใช้ Index หรือเลขดัชนีในการเข้าถึงข้อมูล แต่ Dictionary ใช้ Key ในการเข้าถึงข้อมูล โดย Value เป็นค่าข้อมูลที่สอดคล้องกับ Key นั้นๆ

ตัวอย่างของ Dictionary (dict):

# สร้างตัวแปร dictionary

DicA = {"key1": 1, "key2": "2", "key3": [3, 3, 3], "key4": (4, 4, 4), ('key5'): 5, 9.9: '๙', (0, 1): 6}
DicA
{'key1': 1,
 'key2': '2',
 'key3': [3, 3, 3],
 'key4': (4, 4, 4),
 'key5': 5,
 9.9: '๙',
 (0, 1): 6}
type(DicA)
dict
len(DicA)
7

ตัวแปร DicA ข้างต้นเป็นข้อมูลชนิด dict มีข้อมูล (สมาชิก) อยู่ในรูป key: value เป็นคู่ๆ ทั้งหมด 7 ข้อมูล โดย key 5 ตัวแรกเป็นชนิด str key ถัดมาเป็นตัวเลขชนิด float และ tuple ตามลำดับ

key ของ dictionary เป็นสตริง (str) ได้ เราสามารถเข้าถึงข้องมูลได้ด้วย key (เข้าถึงข้อมูลโดยใช้วงเล็บก้ามปู [] เช่นเดียวกับการเข้าถึงโดยใช้เลขดัชนี (index) ของ list)

# เข้าถึงข้อมูลด้วย key (สตริง)

DicA["key1"]
1

key เป็นตัวเลข (int, float) ได้

# เข้าถึงข้อมูลด้วย key (ตัวเลข)

DicA[9.9]
'๙'

key ยังสามารถเป็นออบเจ็กต์ที่ไม่เปลี่ยนรูป (immutable object) เช่น Tuple ก็ได้

# ข้าถึงข้อมูลด้วย key (Tuple)

DicA[(0, 1)]
6

การสร้าง Dictionary#

\(\qquad\) Dictionary ถูกสร้างขึ้นด้วยวงเล็บปีกกาสองอัน { } (curly braces/brackets) โดยภายในวงเล็บประกอบไปด้วย key และ value เป็นคู่ๆ โดยคั่นแต่ละคู่ด้วยเครื่องหมายโคลอน (colon) : (ในรูปแบบ key: value) และคั่นระหว่างสมาชิกด้วยเครื่องหมายคอมม่า (comma) ,

Syntax

{<key>: <value>, <key>: <value>, ...}
dic_var = {
   <key>: <value>,
   <key>: <value>,
        .
        .
        .
   <key>: <value>
}
# สร้าง dictionary 

release_year_dict = {"Thriller": "1982", "Back in Black": "1980", \
"The Dark Side of the Moon": "1973", "The Bodyguard": "1992", \
"Bat Out of Hell": "1977", "Their Greatest Hits (1971-1975)": "1976", \
"Saturday Night Fever": "1977", "Rumours": "1977"}
release_year_dict
{'Thriller': '1982',
 'Back in Black': '1980',
 'The Dark Side of the Moon': '1973',
 'The Bodyguard': '1992',
 'Bat Out of Hell': '1977',
 'Their Greatest Hits (1971-1975)': '1976',
 'Saturday Night Fever': '1977',
 'Rumours': '1977'}
# สร้าง dictionary

release_year_dict = {"Thriller": "1982", 
 "Back in Black": "1980",
"The Dark Side of the Moon": "1973", 
 "The Bodyguard": "1992",
"Bat Out of Hell": "1977", 
 "Their Greatest Hits (1971-1975)": "1976",
"Saturday Night Fever": "1977", 
 "Rumours": "1977"}
release_year_dict
{'Thriller': '1982',
 'Back in Black': '1980',
 'The Dark Side of the Moon': '1973',
 'The Bodyguard': '1992',
 'Bat Out of Hell': '1977',
 'Their Greatest Hits (1971-1975)': '1976',
 'Saturday Night Fever': '1977',
 'Rumours': '1977'}

Dictionary จัดเก็บข้อมูล (ออบเจกต์) เป็นชุดข้อมูล โดยไม่มีลำดับของข้อมูลที่เก็บ แต่จะเข้าถึง/แสดงข้อมูลแต่ละตัว (หรือ สมาชิก) ด้วย key และค่าที่สอดคล้องกัน (value)

  • key แต่ละคีย์จะมี value ได้เพียงค่าเดียว (key ต้องไม่ซ้ำกัน) ในขณะที่

  • key มากกว่าหนึ่งคีย์สามารถมี value ค่าเดียวกันได้ (value ซ้ำกันได้)

  • key เป็นสตริง (str), ตัวเลข (int, float) หรือ Tuple (ข้อมูล immutable type) ได้เท่านั้น ในขณะที่

  • value เป็นออบเจกต์ชนิดใดก็ได้ (ข้อมูล immutable, mutable และซ้ำกันก็ได้)

ข้อมูลในตัวแปร release_year_dict ข้างต้น สามารถสรุปเป็นตารางได้ดังนี้ โดยคอลัมน์แรกเป็น keys และคอลัมน์ที่สองเป็น values ที่สอดคล้องกับ keys

คลิ๊กฟังเพลง

นอกจากนี้ยังสามารถสร้างตัวแปร Dictionary โดยใช้ built-in ฟังก์ชัน dict( )

อาร์กิวเมนต์ที่ส่งไปให้ฟังก์ชั่น dict([iterable, **kwarg] ) ต้องจัดเรียง key-value เป็นคู่ๆ เช่น List ของ Tuple

dic_var = dict([
   (<key>, <value>),
   (<key>, <value>),
.
.
.
   (<key>, <value>)
])

ลองสร้าง dictionary release_year_dict ข้างต้นใหม่อีกครั้งโดยใช้ built-in ฟังก์ชัน dict( )

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter
release_year_dict
{'Thriller': '1982',
 'Back in Black': '1980',
 'The Dark Side of the Moon': '1973',
 'The Bodyguard': '1992',
 'Bat Out of Hell': '1977',
 'Their Greatest Hits (1971-1975)': '1976',
 'Saturday Night Fever': '1977',
 'Rumours': '1977'}

//: # “

Click here for the solution
release_year_dict = dict([('Thriller', '1982'),
   ('Back in Black', '1980'),
   ('The Dark Side of the Moon', '1973'),
   ('The Bodyguard', '1992'),
   ('Bat Out of Hell', '1977'),
   ('Their Greatest Hits (1971-1975)', '1976'),
   ('Saturday Night Fever', '1977'),
   ('Rumours', '1977')])

release_year_dict
"

Tip

การเปลี่ยนข้อมูลชนิด dict ให้เป็นข้อมูล list ของ tuple สามารถเขียนได้หลายวิธีเช่น

  • สร้าง list ใหม่ขึ้นมาโดยใช้ list comprehesion

lst_a = [(k, v) for k, v in release_year_dict.items()]
list_a
  • สร้าง list ใหม่ขึ้นมาโดยใช้ฟังก์ชั่น list

lst_a = list(release_year_dict.items())
lst_a

โดยเมธอด items() เป็นเมธอดสำหรับดึงทั้งค่า (values) และคีย์ (keys) ทั้งหมดใน Dictionary ออกมา

ในกรณีที่ key ที่เป็นสตริง เราสามารถสร้างตัวแปร Dictionary โดยส่งเป็นคีย์เวิร์ดกิวเมนต์ (keyword arguments) ให้กับฟังก์ชั่น dict(**kwarg) ได้

dic_var = dict(
   <str-key> = <value>,
   <str-key> = <value>,
             .
             .
             .
  <str-key> = <value>)

จาก Syntex ข้างต้น ลองสร้าง Dictionary ขึ้นมาอีกตัวที่มีข้อมูลเดียวกันโดยใช้ฟังก์ชัน dict() แต่ใช้ชื่อตัวแปรใหม่เป็น dic_b

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

dic_b = 
  Cell In [10], line 3
    dic_b =
            ^
SyntaxError: invalid syntax

คำตอบคือ

//:# “

Click here for the solution
dic_b = dict(Thriller='1982',
   Back_in_Black='1980',
   The_Dark_Side_of_the_Moon='1973',
   The_Bodyguard='1992',
   Bat_Out_of_Hell='1977',
   Their_Greatest_Hits_1971_1975='1976',
   Saturday_Night_Fever='1977',
   Rumours='1977')
"
dic_b = dict(Thriller='1982',
   Back_in_Black='1980',
   The_Dark_Side_of_the_Moon='1973',
   The_Bodyguard='1992',
   Bat_Out_of_Hell='1977',
   Their_Greatest_Hits_1971_1975='1976',
   Saturday_Night_Fever='1977',
   Rumours='1977')

Keys#

\(\qquad\) เราสามารถเข้าถึงสมาชิกเพื่ออ่านค่าหรืออัพเดทข้อมูลได้โดยผ่าน Key

จากตัวแปร release_year_dict ที่เราได้ประกาศไปแล้วกัน เราไม่สามารถใช้ Index เข้าถึงข้อมูลได้ ดังตัวอย่างต่อไปนี้

# อ่านค่าโดยใช้เลข index
 
release_year_dict[0] 
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In [12], line 3
      1 # อ่านค่าโดยใช้เลข index
----> 3 release_year_dict[0]

KeyError: 0

เกิดความผิดพลาด KeyError เนื่องจากเลข 0 ไม่ได้ถูกบันทึกเป็น key ใน dict release_year_dict

# อ่านค่าโดยใช้ keys

release_year_dict['Thriller'] 
'1982'

ค่าที่แสดงเป็นค่าของข้อมูลนี้สอดคล้องกับคีย์ Thriller!

ในทำนองเดียวกันกับ The Bodyguard

# อ่านค่าโดยใช้ keys

release_year_dict['The Bodyguard'] 
'1992'

หรือจะอ่านค่าด้วยเมธอด get( ) โดยมี Key เป็นอาร์กิวเมนต์ ซึ่งจะได้ผลลัพธ์เหมือนกับการอ่านค่าโดยตรง

# อ่านค่าโดยใช้เมธอด get()

release_year_dict.get('The Bodyguard') 
'1992'

แต่ในกรณีของเมธอด get( ) ถ้า key ที่ส่งเข้าไป ไม่ได้ถูกบันทึกไว้ ไพธอนจะไม่แจ้งข้อผิดพลาด (ไม่เกิด KeyError) แต่จะส่งค่ากลับเป็น None

release_year_dict.get('Bad boy') 
print(release_year_dict.get('Bad boy'))
None

กรณีที่ไม่มี key เราสามารถกำหนดให้เมธอด get จะส่งค่ากลับเป็นอย่างอื่นที่ไม่ใช่ None ก็ได้ เช่น

release_year_dict.get('Back in Black', -1)
'1980'
release_year_dict.get('Bad boy', -1)
-1

Note

‘None’ คนทั่วๆ ไปมักคิดไปว่า None เป็น Keyword แต่จริงๆ แล้ว None เป็นออบเจ็กต์/ข้อมูลชนิดหนึ่งในภาษาไพธอน (<class ‘NoneType’>) มีค่าคล้ายๆ กับค่า null หรือ nil ในภาษาอื่น กล่าวคือ None คือ ค่าที่ไม่มีค่าใดๆ โปรแกรมเมอร์มักใช้ None เป็นสถานะของ Flag ในการตรวจสอบ รวมถึงใช้เป็นค่าเริ่มต้น (default value) ให้กับตัวแปร (เพื่อให้ตัวแปรตัวนั้นๆ เป็น undefined) หรือค่าส่งกลับ (return value) ของฟังก์ชั่น

คลิ๊กฟังเพลง

เราสามารถดึง Keys ทั้งหมดที่มีอยู่ใน Dictionary ออกมาได้โดยใช้เมธอด keys()

# ดึง keys ทั้งหมดที่อยู่ใน dictionary

release_year_dict.keys() 
dict_keys(['Thriller', 'Back in Black', 'The Dark Side of the Moon', 'The Bodyguard', 'Bat Out of Hell', 'Their Greatest Hits (1971-1975)', 'Saturday Night Fever', 'Rumours'])
print(type(release_year_dict.keys()))
<class 'dict_keys'>

//: # “

เมธอด `keys()` ส่งค่ากลับเป็นออบเจ็ค ([view objects](https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects): ) ในรูปของ list ของ Keys ทั้งหมดที่ถูกบันทึกภายใน Dictionary
"

Note

เมธอด keys() ส่งค่ากลับเป็นออบเจ็ค ((view objects): dict_keys) ในรูปของ list ของ Keys ทั้งหมดที่ถูกบันทึกภายใน Dictionary

เปลี่ยนออบเจ็กต์ dict_keys ให้อยู่ในรูปของ List

list(release_year_dict.keys())
['Thriller',
 'Back in Black',
 'The Dark Side of the Moon',
 'The Bodyguard',
 'Bat Out of Hell',
 'Their Greatest Hits (1971-1975)',
 'Saturday Night Fever',
 'Rumours']

นอกจากนี้ เรายังสามารถดึง Values ทั้งหมดที่มีอยู่ใน Dictionary ออกมาโดยใช้เมธอด values()

# ดึงค่า (values) ทั้งหมดที่มีอยู่ใน dictionary

release_year_dict.values() 
dict_values(['1982', '1980', '1973', '1992', '1977', '1976', '1977', '1977'])
print(type(release_year_dict.values()))
<class 'dict_values'>

//: # “

เมธอด `values()` ส่งค่ากลับเป็นออบเจ็ค ([view objects]: ) ในรูปของ list ของ Values ทั้งหมดที่ถูกบันทึกภายใน Dictionary
release_year_dict.items()release_year_dict.items()release_year_dict.items()release_year_dict.items()release_year_dict.items()release_year_dict.items()release_year_dict.items()release_year_dict.items()release_year_dict.items() "

Note

เมธอด values() ส่งค่ากลับเป็นออบเจ็ค ([view objects]: dict_values) ในรูปของ list ของ Values ทั้งหมดที่ถูกบันทึกภายใน Dictionary

เปลี่ยนให้อยู่ในรูปของ List

list(release_year_dict.values())
['1982', '1980', '1973', '1992', '1977', '1976', '1977', '1977']

เราสามารถเพิ่มสมาชิกสมาชิก (adding/inserting) เข้าไปใน Dictionary ได้ง่ายๆ ดังนี้

# เพิ่มข้อมูลต่อท้ายใน dictionary

release_year_dict['Graduation'] = '2007'
release_year_dict
{'Thriller': '1982',
 'Back in Black': '1980',
 'The Dark Side of the Moon': '1973',
 'The Bodyguard': '1992',
 'Bat Out of Hell': '1977',
 'Their Greatest Hits (1971-1975)': '1976',
 'Saturday Night Fever': '1977',
 'Rumours': '1977',
 'Graduation': '2007'}

เราสามารถลบ (removing/deleting) สมาชิกได้โดยใช้คำสั่ง del หรือ del()

# ลบสมาชิกด้วย key
del(release_year_dict['Thriller'])
release_year_dict
{'Back in Black': '1980',
 'The Dark Side of the Moon': '1973',
 'The Bodyguard': '1992',
 'Bat Out of Hell': '1977',
 'Their Greatest Hits (1971-1975)': '1976',
 'Saturday Night Fever': '1977',
 'Rumours': '1977',
 'Graduation': '2007'}
# ลบสมาชิกด้วย key
del release_year_dict['Graduation']
release_year_dict
{'Back in Black': '1980',
 'The Dark Side of the Moon': '1973',
 'The Bodyguard': '1992',
 'Bat Out of Hell': '1977',
 'Their Greatest Hits (1971-1975)': '1976',
 'Saturday Night Fever': '1977',
 'Rumours': '1977'}

Note

del เป็นคำสั่ง (statement) ไม่ใช่ฟังก์ชัน เป็นคำสั่งลบข้อมูลออกจากหน่วยความจำ จะมีหรือไม่มีวงเล็บก็ได้! ยกตัวอย่างเช่น ถ้ากำหนดให้ x, y = 1, 2 คำสั่งต่อไปนี้ไม่ว่าจะเขียนคำสี่งใดก็ตามจะให้ผลลัพธ์เหมือนกัน

del x,y del (x,y) del (x),[y] del [x,(y)] del ([x], (y))


(Ref: [stackoverflow.com](https://stackoverflow.com/questions/39028249/why-does-del-x-with-parentheses-around-the-variable-name-work)

เราสามารถตรวจสอบว่ามี key ที่ต้องการอยู่ใน Dictionary หรือไม่โดยใช้ตัวดำเนินการ in

# ตรวจสอบว่าคีย์อยู่ใน dict หรือไม่

'The Bodyguard' in release_year_dict
True

หรือเขียนโค้ดแบบนี้ก็ได้

# ตรวจสอบว่าคีย์อยู่ใน dict หรือไม่

'The Bodyguard' in release_year_dict.keys()
True
'Thriller' in release_year_dict
False

นอกจากนี้ เรายังสามารถดึงทั้ง Keys และ Values ทั้งหมดที่อยู่ใน Dictionary ออกมาพร้อมกันเป็นคู่ๆ โดยใช้เมธอด items()

//: # “

เมธอด `items()` ส่งค่ากลับเป็นออบเจ็ค ([view objects]: `dict_items`) ในรูปของ tuples ที่อยู่ใน list ซึ่งมี key-value pairs มาจาก dictionary
"

Note

เมธอด items() ส่งค่ากลับเป็นออบเจ็ค ([view objects]: dict_items) ในรูปของ tuples ที่อยู่ใน list ซึ่งมี key-value pairs มาจาก dictionary

release_year_dict.items()
dict_items([('Back in Black', '1980'), ('The Dark Side of the Moon', '1973'), ('The Bodyguard', '1992'), ('Bat Out of Hell', '1977'), ('Their Greatest Hits (1971-1975)', '1976'), ('Saturday Night Fever', '1977'), ('Rumours', '1977')])
print(type(release_year_dict.items()))
<class 'dict_items'>

เปลี่ยนให้อยู่ในรูปของ List

list(release_year_dict.items())
[('Back in Black', '1980'),
 ('The Dark Side of the Moon', '1973'),
 ('The Bodyguard', '1992'),
 ('Bat Out of Hell', '1977'),
 ('Their Greatest Hits (1971-1975)', '1976'),
 ('Saturday Night Fever', '1977'),
 ('Rumours', '1977')]

สามารถใช้ฟังก์ชัน len( ) ตรวจสอบจำนวนสมาชิกได้

len(release_year_dict)
7

ตารางสรุปเมธอดของ Dictionary (ที่มักใช้บ่อย)

เมธอด

คำอธิบาย

clear()

ลบสมาชิกทั้งหมดใน dictionary (กลายเป็น empty dictionary)

copy()

ส่งค่ากลับเป็น dict ชุดใหม่ที่มีข้อมูลคัดลอก (clone) จาก dictionary

get()

ส่งค่ากลับเป็นค่า (values) ที่สัมพันธ์กับคีย์ (key) ที่ระบุ

items()

ส่งค่ากลับเป็นลิสต์ของคู่คีย์และค่า (key-value pair) ทั้งหมดใน dictionary

keys()

ส่งค่ากลับเป็นลิสต์ของคีย์ (keys) ทั้งหมดใน dictionary

pop()

ลบคีย์ (key) ออกจาก dictionary ถ้ามีคีย์ที่ระบุอยู่ และคืนค่ากลับเป็นค่า (value) ที่สัมพันธ์กับคีย์ที่ลบ

popitem()

ลบคู่คีย์และค่า (key-value pair) ตัวสุดท้ายออกจาก dictionary

update()

รวมข้อมูล (merge) ใน dictionary กับ dictionary อื่นเข้าด้วยกัน

values()

ส่งค่ากลับเป็นลิสต์ของค่า (values) ทั้งหมดใน dictionary

Ref: https://realpython.com/python-dicts/#built-in-dictionary-methods


[Exercise]#

1. จงตอบคำถามจงตอบคำถามจาก dictionary ต่อไปนี้

soundtrack_dic = {"The Bodyguard":"1992", "Saturday Night Fever":"1977", "My Heart Will Go On": "1997", "Happy": "2013", "A Real Hero": "2011"}
soundtrack_dic 
{'The Bodyguard': '1992',
 'Saturday Night Fever': '1977',
 'My Heart Will Go On': '1997',
 'Happy': '2013',
 'A Real Hero': '2011'}

1.1) จงแสดงค่า Keys ทั้งหมดที่อยู่ใน Dictionary soundtrack_dic ในรูปของ list

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//: # “

Click here for the solution
soundtrack_dic.keys() # Output: ['The Bodyguard', 'Saturday Night Fever', 'My Heart Will Go On', 'Happy', 'A Real Hero'] 

"

1.2) จงแสดงค่า Values ทั้งหมดที่อยู่ใน Dictionary soundtrack_dic ในรูปของ list

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//:# “

Click here for the solution
soundtrack_dic.values() # Outpit: ['1992', '1977', '1997', '2013', '2011']

"

2 กำหนดให้ อัลบั้ม Back in Black, The Bodyguard และ Thriller มียอดขายอย่างเป็นทางการ 50, 50 และ 65 ล้านเหรียญสหรัฐ ตามลำดับ

2.1) จงสร้างตัวแปร dictionary album_sales_dict โดยให้ keys เป็นชื่ออัลบัมและยอดขายเป็น vaules หน่วยล้านเหรียญสหรัฐ

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//: # “

Click here for the solution
album_sales_dict = {'The Bodyguard':50, 'Back in Black':50, 'Thriller':65}

หรือ

album_sales_dict = dict([('The Bodyguard', 50), ('Back in Black', 50), ('Thriller', 65)])

หรือ

album_sales_dict = dict((('The Bodyguard', 50), ('Back in Black', 50), ('Thriller', 65)))
"

2.2) ใช้ key หายอดขายของอัลบัม Thriller

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//: # (

Click here for the solution
album_sales_dict["Thriller"]

)

2.3) ใช้เมธอด keys() ดึงชื่ออัลบัมที่อยู่ใน dictionary ออกมาในรูปของ list

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//: # “

Click here for the solution
album_sales_dict.keys()

"

2.4) ใช้เมธอด values ดึง Value ที่เป็นยอดขายใน dictionary ออกมาในรูปของ list

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//: # “

Click here for the solution
album_sales_dict.values()

"

3 จงสร้าง dictionary person ที่มีข้อมูล

{'fname': 'แฮ่งดี',
 'lname': 'เก่งขยันอดทน',
 'age': 21,
 'spouse': 'งาม',
 'children': ['พอดี', 'พอใจ', 'เพรียงพอ'],
 'pets': {'dog': 'ชิโระ', 'cat': 'คุโรเนโกะ'},
 'occup': ('ครู', 'ชาวสวน')}

โดยทำตามขั้นตอนต่อไปนี้

3.1) สร้างตัวแปร person เป็นข้อมูล dictionary ว่างๆ (empty dict)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.2) โค้ดตรวจสอบว่าตัวแปร person เป็นชนิด dict หรือไม่

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.3) คำสั่งกำหนด key fname (ชื่อ)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.4) คำสั่งกำหนด key lname (นามสกุล)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.5) คำสั่งกำหนด key age (อายุ)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.6) คำสั่งกำหนด key spouse (คู่สมรส)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.7) คำสั่งกำหนด key children (บุตรธิดา)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.8) คำสั่งกำหนด key pets (สัตว์เลี้ยง)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.9) คำสั่งกำหนด key occup (อาชีพ)

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.10) คำสั่งแสดงชื่อของลูกคนสุดท้าย

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.11) คำสั่งแสดงชื่อของแมว

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

3.12) คำสั่งแสดงอาชีพว่ามีกี่อาชีพ

# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter

//: # “

Click here for the solution

person = {}
type(person) == dict
person['fname'] = 'แฮ่งดี'
person['lname'] = 'เก่งขยันอดทน'
person['age'] = 21
person['spouse'] = 'งาม'
person['children'] = ['พอดี', 'พอใจ', 'เพรียงพอ']
person['pets'] = {'dog': 'ชิโระ', 'cat': 'คุโรเนโกะ'}
person['occup'] = ('ครู','ชาวสวน')

person['children'][-1]
person['pets']['cat']
len(person['occup'])
"

“Make it work, make it right, make it fast.” Kent Beck (an American software engineer and the creator of the Extreme Programming and Test Driven Development software development …)


Author#

S.C.

Change Log#

Date

Version

Change Description

08-08-2021

0.1

First edition

05-05-2022

0.2

Fix the typo, minor change