Ich würde eine Wrapper machen, so dass Sie nicht-invasiv sein können. Minimal, zum Beispiel ...:
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
Nun if CaseInsensitively('MICHAEL89') in whatever:
sollte je nach Bedarf verhalten (ob die rechte Seite ist eine Liste, dict oder gesetzt). (Es kann mehr Aufwand erfordern, um ähnliche Ergebnisse für die String-Inklusion zu erzielen, vermeiden Sie Warnungen in einigen Fällen, die unicode
, usw. betreffen).
'if‚CaseFudge'.lower() in [x.lower() für x in der Liste] '' – fredley
[...] 'schafft die ganze Liste. '(name.upper() für name in USERNAMES)' würde nur einen Generator und einen String gleichzeitig erstellen - eine enorme Speicherersparnis, wenn Sie diese Operation häufig durchführen. (Noch mehr Einsparungen, wenn Sie einfach eine Liste von Benutzernamen in Kleinbuchstaben erstellen, die Sie jedes Mal für die Überprüfung wiederverwenden) – viraptor
Ziehen Sie es vor, beim Erstellen des Diktats aus Leistungsgründen alle Schlüssel zu senken. – Ryan