
Python Dictionary Data Type (Kiểu dữ liệu từ điển trong Python)
1. Dictionary trong Python là gì?
Giải thích (tiếng Việt)
- Dictionary (từ điển) là một kiểu dữ liệu lưu trữ theo dạng key–value.
- Dùng dấu ngoặc nhọn
{ }.
- Key là duy nhất, và đóng vai trò định danh cho value.
- Khác với list:
- List truy cập bằng chỉ số số học
- Dictionary truy cập bằng tên key
Ví dụ:
user_info = {
"name": "Hùng",
"age": 25,
"city": "Hà Nội"
}
print(user_info["name"]) # Truy cập theo key2. Cập nhật ứng dụng: Nhận input theo dạng "days:unit"
Thay vì chỉ nhập số ngày, ta muốn người dùng nhập:
20:hourshoặc
20:minutesCác bước xử lý input
- Yêu cầu người dùng nhập theo format
days:unit
- Tách chuỗi bằng dấu
:→ tạo list gồm 2 phần
- Phần thứ 1 → số ngày
- Phần thứ 2 → đơn vị chuyển đổi
Code thực tế:
user_input = input("Enter a number of days and conversion unit (ví dụ: 2:hours): ")
days_and_unit = user_input.split(":") # Tách bởi dấu ':'
print(days_and_unit)Ví dụ input:
2:hoursKết quả:
["2", "hours"]3. Tạo dictionary từ danh sách đã tách
Ý tưởng
- Dùng index 0 → số ngày
- Dùng index 1 → đơn vị
- Tạo dictionary dạng:
{
"days": <giá trị ngày>,
"unit": <hours hoặc minutes>
}Code thực tế:
days_and_unit = user_input.split(":")
my_dict = {
"days": days_and_unit[0],
"unit": days_and_unit[1]
}
print(my_dict)
print(type(my_dict)) # Kiểm tra kiểu dữ liệuOutput ví dụ:
{'days': '2', 'unit': 'hours'}
<class 'dict'>4. Truy cập giá trị trong dictionary
Giải thích
- Truy cập bằng
dict["key"]
- Không dùng số như list
Code ví dụ:
print(my_dict["days"])
print(my_dict["unit"])5. Viết hàm chuyển đổi sử dụng dictionary
Ta cần tạo một hàm:
- Nhận dictionary làm tham số
- Lấy
daysvàunittừ dictionary
- Kiểm tra số ngày có phải số nguyên không
- Kiểm tra đơn vị hợp lệ
- Trả về kết quả chuyển đổi
Code hoàn chỉnh:
def validate_and_execute(data):
try:
days = int(data["days"]) # Chuyển về số nguyên
unit = data["unit"]
if unit == "hours":
return f"{days} days = {days * 24} hours"
elif unit == "minutes":
return f"{days} days = {days * 24 * 60} minutes"
else:
return "Đơn vị không được hỗ trợ!"
except ValueError:
return "Giá trị ngày không hợp lệ! Vui lòng nhập số nguyên."6. Ghép toàn bộ chương trình
def validate_and_execute(data):
try:
days = int(data["days"])
unit = data["unit"]
if unit == "hours":
return f"{days} days = {days * 24} hours"
elif unit == "minutes":
return f"{days} days = {days * 24 * 60} minutes"
else:
return "Đơn vị không được hỗ trợ!"
except ValueError:
return "Giá trị ngày không hợp lệ! Vui lòng nhập số nguyên."
# --- Phần chính của chương trình ---
user_input = input("Enter a number of days and conversion unit (ví dụ: 20:hours): ")
# Tách giá trị
days_and_unit = user_input.split(":")
# Tạo dictionary
user_data = {
"days": days_and_unit[0],
"unit": days_and_unit[1]
}
# Thực thi
result = validate_and_execute(user_data)
print(result)7. Tóm tắt kiến thức quan trọng (Tiếng Việt)
Dictionary là gì?
- Kiểu dữ liệu dạng key–value
- Truy cập bằng tên key, không phải chỉ số
Khi nào dùng dictionary?
- Khi bạn cần gắn nhãn cho dữ liệu
- Khi dữ liệu có cấu trúc
- Khi cần truyền nhiều giá trị vào hàm một cách rõ ràng
Cú pháp chính
- Tạo từ điển:
{ "key": value }
- Truy cập:
dict["key"]
- Thêm key mới:
dict["new_key"] = value
Ví dụ thực tế đã học
- Chuyển đổi ngày → giờ / phút dựa trên dictionary
- Parse input người dùng dạng
"days:unit"
- Validate dữ liệu bằng try/except
PHẦN BÀI TẬP
Bài 1 — Tạo dictionary từ input
Đề bài:
Viết chương trình yêu cầu người dùng nhập theo format:
10:hoursSau đó, tách chuỗi và tạo dictionary:
{
"days": <giá trị ngày>,
"unit": <giá trị đơn vị>
}In dictionary đó ra màn hình.
Đáp án:
user_input = "10:hours"
days_and_unit = user_input.split(":")
result = {
"days": days_and_unit[0],
"unit": days_and_unit[1]
}
print(result)Giải thích:
split(":")tách chuỗi thành list:["10", "hours"]
- Dùng index để gán vào dictionary
- Dictionary được in ra:
{'days': '10', 'unit': 'hours'}
Bài 2 — Truy cập giá trị trong dictionary
Đề bài:
Cho dictionary:
info = {"days": "3", "unit": "minutes"}In ra:
- Giá trị của
"days"
- Giá trị của
"unit"
Đáp án:
info = {"days": "3", "unit": "minutes"}
print(info["days"])
print(info["unit"])Giải thích:
- Truy cập dictionary dùng key:
dict["key"]
- Output:
3 minutes
Bài 3 — Xử lý lỗi ValueError
Đề bài:
Viết hàm nhận dictionary:
{"days": "abc", "unit": "hours"}Hàm chuyển giá trị "days" sang kiểu int.
Nếu lỗi, trả về "Giá trị ngày không hợp lệ!".
Đáp án:
def check_days(data):
try:
value = int(data["days"])
return value
except ValueError:
return "Giá trị ngày không hợp lệ!"
test_data = {"days": "abc", "unit": "hours"}
print(check_days(test_data))Giải thích:
"abc"không thể convert sangint→ gây lỗiValueError
exceptbắt lỗi và trả về thông báo
- Output:
Giá trị ngày không hợp lệ!
Bài 4 — Viết hàm chuyển đổi hoàn chỉnh
Đề bài:
Viết hàm nhận dictionary như sau:
{"days": "4", "unit": "hours"}Nếu unit là "hours" → trả về "4 days = 96 hours"
Nếu "minutes" → trả về "4 days = 5760 minutes"
Đáp án:
def convert(data):
days = int(data["days"])
unit = data["unit"]
if unit == "hours":
return f"{days} days = {days * 24} hours"
elif unit == "minutes":
return f"{days} days = {days * 24 * 60} minutes"
else:
return "Đơn vị không được hỗ trợ!"
print(convert({"days": "4", "unit": "hours"}))Giải thích:
4 * 24 = 96
- Unit là
"hours"→ nhánh if đúng → trả kết quả
- Output:
4 days = 96 hours
Bài 5 — Tạo chương trình đầy đủ nhận input từ người dùng
Đề bài:
Viết chương trình:
- Nhập chuỗi
"days:unit"
- Tách chuỗi
- Tạo dictionary
- Truyền dictionary vào hàm
validate_and_execute
- In kết quả chuyển đổi
Đáp án:
def validate_and_execute(data):
try:
days = int(data["days"])
unit = data["unit"]
if unit == "hours":
return f"{days} days = {days * 24} hours"
elif unit == "minutes":
return f"{days} days = {days * 24 * 60} minutes"
else:
return "Đơn vị không được hỗ trợ!"
except ValueError:
return "Giá trị ngày không hợp lệ!"
# Chương trình chính
user_input = input("Nhập dữ liệu theo dạng days:unit → ví dụ 5:hours: ")
days_and_unit = user_input.split(":")
data = {
"days": days_and_unit[0],
"unit": days_and_unit[1]
}
print(validate_and_execute(data))Giải thích:
- Chương trình xử lý toàn bộ pipeline
- Validation đảm bảo nhập sai thì vẫn báo lỗi
- Ví dụ input:
5:minutes→ Output:5 days = 7200 minutes
Bài 6 — Bài nâng cao: Kiểm tra input không đúng định dạng
Đề bài:
Nếu người dùng nhập chuỗi không chứa dấu ":", ví dụ "10hours"
→ Hãy in "Sai định dạng! Vui lòng nhập theo dạng days:unit"
Đáp án:
user_input = "10hours"
if ":" not in user_input:
print("Sai định dạng! Vui lòng nhập theo dạng days:unit")
else:
days_and_unit = user_input.split(":")
print(days_and_unit)Giải thích:
- Kiểm tra ký tự
":"giúp đảm bảo input hợp lệ
- Nếu không có → báo lỗi định dạng trước khi chạy chương trình
- Tránh
IndexErrorkhi split không đúng