Để trả lời câu hỏi " làm thế nào tôi có thể tìm ra nếu một chỉ mục nhất định trong chính tả đó đã được đặt thành giá trị không phải là Không ", tôi thích điều này:
try:
nonNone = my_dict[key] is not None
except KeyError:
nonNone = False
Điều này phù hợp với khái niệm EAFP đã được viện dẫn (dễ dàng hơn để yêu cầu sự tha thứ sau đó cho phép). Nó cũng tránh việc tra cứu khóa trùng lặp trong từ điển như trongkey in my_dict and my_dict[key] is not None
rất thú vị nếu tra cứu đắt tiền.
Đối với vấn đề thực tế mà bạn đã đặt ra, tức là tăng int nếu nó tồn tại hoặc đặt nó thành giá trị mặc định, tôi cũng khuyên bạn nên
my_dict[key] = my_dict.get(key, default) + 1
như trong câu trả lời của Andrew Wilkinson.
Có một giải pháp thứ ba nếu bạn đang lưu trữ các đối tượng có thể sửa đổi trong từ điển của bạn. Một ví dụ phổ biến cho điều này là một multimap , nơi bạn lưu trữ một danh sách các yếu tố cho các khóa của bạn. Trong trường hợp đó, bạn có thể sử dụng:
my_dict.setdefault(key, []).append(item)
Nếu một giá trị cho khóa không tồn tại trong từ điển, phương thức setdefault sẽ đặt nó thành tham số thứ hai của setdefault. Nó hoạt động giống như một my_dict [key] tiêu chuẩn, trả về giá trị cho khóa (có thể là giá trị mới được đặt).