3
Python - Kiểm tra nếu key có tồn tại trong dict hay không?
0
Member447210 đã đăng:

Giả sử mình có một dict Python như bên dưới:

dict = {'a': 1, 'b': 2, 'c': 3}

Mình muốn kiểm tra xem một khóa nào đó có tồn tại trong dict hay chưa? Nếu có, mình sẽ lấy giá trị của khóa ra, còn nếu chưa, thông báo khóa không tồn tại, cảm ơn mọi sự giúp đỡ ạ?

thêm bình luận...
1
manhhung6780 đã đăng:

Bạn có thể thử sử dụng từ khóa in trong Python để kiểm tra xem khóa có tồn tại trong dict hay không, kết quả trả về sẽ là True (nếu tồn tại khóa) hoặc False (nếu không tồn tại khóa), sử dụng câu lệnh if và tùy vào mỗi trường hợp, bạn chọn lấy giá trị của khóa (nếu tồn tại) hoặc thông báo ra màn hình (nếu khóa không tồn tại).

Ví dụ trên Python-3.7:

dict = {'a': 1, 'b': 2, 'c': 3}
key = 'b'
if key in dict:
    value = dict[key]
    print('Ton tai khoa: %s trong dict, gia tri cua khoa la: %s' %(key, value))
else:
    print('Khong ton tai khoa %s trong dict' %(key))

Nếu bạn sử dụng Python-2.7, tương tự, chỉ cần thay câu lệnh print tương ứng.

đã bổ sung 10 tháng trước bởi
Avatar: manhhung67 manhhung6780

Cùng một ý tưởng với @manhhung67 nhưng có thể được viết lại một cách ngắn gọn như sau:

dict = {'a': 1, 'b': 2, 'c': 3}
key = 'b'
print(dict[key]) if key in dict else print('Khong ton tai khoa %s trong dict' %(key))
PyPi 26.12.2018
thêm bình luận...
0
Ðức Duy20 đã đăng:

Bạn cũng có thể sử dụng cấu trúc tryexcept trong Python:

dict = {'a': 1, 'b': 2, 'c': 3}

try:
    print(dict['a'])
except:
    print('Key is not exist')

@Đức Duy, mình không hiểu cách của bạn hoạt động như thế nào, có thể giải thích rõ hơn một chút được không ạ?

Member4472 26.12.2018

Bởi vì khi lấy giá trị của khóa trong dict Python, toán tử [] trong câu lệnh dict['a'] sẽ quăng lỗi nếu khóa không tồn tại và trả về giá trị của khóa nếu khóa tồn tại.

Mục đích của mình là dùng try - except để bắt lỗi cho trường hợp khóa không tồn tại trong dict, còn nếu trường hợp khóa tồn tại trong dict, thì câu lệnh print(dict['a']) sẽ chạy đúng như mong đợi.

Ðức Duy 26.12.2018

How fast are exceptions in Python?

A try/except block is extremely efficient if no exceptions are raised. Actually catching an exception is expensive.

Theo Python Docs, sử dụng try/except sẽ ảnh hưởng đến tốc độ thực thi khi lỗi xảy ra, cho nên nếu bạn quan tâm tới vấn đề thời gian thực thi và không chắc sẽ có bao nhiêu lỗi được quăng khi kiểm tra key có tồn tại trong dict hay không thì nên tránh.

PyPi 26.12.2018
thêm bình luận...
0
Ðắc Di0 đã đăng:

Phương thức get() của dict cũng ok nhé.

dict = {'a': 1, 'b': 2, 'c': 3}
print(dict.get('a', 'khong ton tai khoa'))
thêm bình luận...

Câu trả lời của bạn

Chào mừng bạn đến với cộng đồng chia sẻ tri thức BanhoiTuidap.com, bạn có thể chia sẻ bất kỳ sự hiểu biết, nghiên cứu hoặc kinh nghiệm của mình về câu hỏi này với một số lưu ý:
  • Lịch sự, tế nhị.
  • Hạn chế ghi tắt, câu trả lời của bạn chỉ nên tập trung vào câu hỏi ở trên.
Câu trả lời của bạn sẽ được đăng ở chế độ cộng đồng, cho nên bạn sẽ không thể chỉnh sửa sau khi đăng, có thể đăng ký thành viên trên BanhoiTuidap.com khi bạn muốn theo dõi câu hỏi này hoặc chủ đề liên quan.
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)
Bạn đang thắc mắc? Hỏi cộng đồng (?)