Dictionary (dict) là cấu trúc dữ liệu ánh xạ key → value, dùng cặp ngoặc nhọn {}. Key phải immutable (hashable), value bất kỳ. Python 3.7+ bảo chứng thứ tự insertion order.
1. Tạo Dictionary
# Cách 1: Dict literal
dict1 = {'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}
# Cách 2: dict() từ iterable cặp (key, value)
dict2 = dict([('day1', 'Mon'), ('day2', 'Tue'), ('day3', 'Wed')])
# Cách 3: dict() từ keyword arguments
dict3 = dict(day1='Mon', day2='Tue', day3='Wed')
# Cách 4: Dictionary comprehension
dict4 = {f'day{i}': d for i, d in enumerate(['Mon', 'Tue', 'Wed'], 1)}
print(dict1) # {'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}2. Nested Dictionary (Dict lồng)
data = {
'day1': 'Mon',
'day2': 'Tue',
'weekend': {
'd1': 'Saturday',
'd2': 'Sunday'
}
}
print(data['weekend']['d1']) # Saturday3. Truy cập giá trị
d = {'a': 1, 'b': 2}
print(d['a']) # 1 - KeyError nếu key không tồn tại
print(d.get('a')) # 1 - trả None nếu không có
print(d.get('c', 0)) # 0 - default value
print(d.setdefault('c', 3)) # 3, và thêm 'c':3 vào dict4. Thêm/Cập nhật phần tử
d = {'a': 1}
d['b'] = 2 # Thêm mới
d['a'] = 10 # Cập nhật
d.update({'c': 3, 'd': 4}) # Thêm nhiều
print(d) # {'a': 10, 'b': 2, 'c': 3, 'd': 4}5. Xóa phần tử
d = {'a': 1, 'b': 2, 'c': 3}
del d['a'] # Xóa key 'a'
val = d.pop('b') # Xóa và trả về value (2)
last = d.popitem() # Xóa và trả về (key, value) cặp cuối (Python 3.7+)
d.clear() # Xóa tất cả
print(d) # {}6. Duyệt Dictionary
d = {'a': 1, 'b': 2, 'c': 3}
for key in d: # duyệt key
print(key)
for key in d.keys(): # explicit keys
print(key)
for value in d.values(): # duyệt value
print(value)
for key, value in d.items(): # duyệt cặp (khuyên dùng)
print(key, value)7. Dictionary Comprehension
# Tạo dict từ 2 list
keys = ['a', 'b', 'c']
vals = [1, 2, 3]
d = {k: v for k, v in zip(keys, vals)}
# Filter dict
d = {k: v for k, v in d.items() if v > 1}
# Swap key-value (value phải unique)
d = {v: k for k, v in d.items()}8. Merge Dictionary (Python 3.9+)
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
# Union operator |
merged = d1 | d2 # {'a': 1, 'b': 3, 'c': 4} (d2 ghi đè d1)
d1 |= d2 # In-place update d1