Tôi sẽ tạo trình bao bọc để bạn có thể không xâm lấn. Tối thiểu, ví dụ ...:
class CaseInsensitively(object):
def __init__(self, s):
self.__s = s.lower()
def __hash__(self):
return hash(self.__s)
def __eq__(self, other):
# ensure proper comparison between instances of this class
try:
other = other.__s
except (TypeError, AttributeError):
try:
other = other.lower()
except:
pass
return self.__s == other
Bây giờ, if CaseInsensitively('MICHAEL89') in whatever:
nên cư xử theo yêu cầu (xem phía bên tay phải là một danh sách, dict, hoặc thiết lập). (Nó có thể đòi hỏi nhiều nỗ lực hơn để đạt được kết quả tương tự cho việc đưa vào chuỗi, tránh cảnh báo trong một số trường hợp liên quan đến unicode
, v.v.).
Nguồn
2010-09-02 14:45:08
'nếu 'CaseFudge'.lower() trong [x.lower() cho x trong danh sách]' – fredley
'[...]' tạo ra toàn bộ danh sách. '(name.upper() cho tên trong USERNAMES)' sẽ chỉ tạo ra một máy phát và một chuỗi cần thiết tại một thời điểm - tiết kiệm bộ nhớ lớn nếu bạn đang thực hiện thao tác này rất nhiều. (thậm chí tiết kiệm nhiều hơn, nếu bạn chỉ cần tạo danh sách tên người dùng thường xuyên mà bạn sử dụng lại để kiểm tra mọi lúc) – viraptor
Ưu tiên giảm tất cả các phím khi xây dựng dict, vì lý do hiệu suất. – Ryan