Python Suche einen Satz mit groß-und Kleinschreibung
Ich habe 3 sets und ein dict. Meine Sätze in etwa so Aussehen:
set1 = set(['Bob', 'Jim', 'RALPH'])
set2 = set(['Jill', 'Nadeen', 'WaterBottle'])
set3 = set(['ThisIsOne', 'ThisIsTwo'])
all_names = {'first_one': set1,
'second_one': set2,
'third_one': set3,
'all':set1 | set2 | set3}
#I can make it work if I do this:
r = re.search(input, "','".join(all_names['all'])
if r:
name = all_names[r.group()]
Mein Benutzer übergeben wird, in der die Namen der ersten drei Sätze, oder einer der Schlüssel in all_names. Die Namen der Benutzer übergibt, wird nicht case-Sensitiv ist, aber ich zurückgeben müssen Sie die entsprechenden Namen, wie Sie groß geschrieben in dem Satz(s). Ich habe kein problem damit die Liste der Namen, wenn Sie passieren in einem Schlüssel, aber es ist eine gute Möglichkeit, dass, wenn der Benutzer übergibt sagen 'nadeen', ich finde es einfach (und effizient) in all_names['alle']?
Aber mein Chef nicht denken, dass dies der beste Ansatz. Gibt es einen Weg, um Verständnis für diese? Irgendwelche anderen Ideen?
- Wie viele sets gibt es in deinem realen code? Auch, welche Einwände hat Ihr Chef haben sich gegen dieses Konzept?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, eher naiver Ansatz wäre zum Durchlaufen
all_names['all']
und eine groß- /Kleinschreibung zu überprüfen, wie diese:Oder, ein anderer Weg ist die Suche in die Liste mit kleingeschriebenen Elementen aus dem set:
ilower = input.lower(); any(x.lower() == ilower for x in all_names['all'])
die bekommt Sie durch einen Kurzschluss.Ich würde ein dictionary-Zuordnung Kleinschreibung Wörter auf Wörter mit der richtigen groß - /Kleinschreibung:
Nun müssen Sie nur überprüfen der Eingabewerte mit Kleinschreibung. Aus Ihrem post, es ist schwer zu sagen, ob Sie sollten ein Wörterbuch für jeden Satz, oder einfach nur auf master Wörterbuch, aber ich denke, dass die ultimative Idee ist die gleiche.