Python Dictionary mehrere Keys einem Wert zuweisen?

4 Antworten

Bei wenigen und kurzen Begriffen könnte man einen regulären Ausdruck für den Key verwenden.

Andernfalls solltest du dir für deinen Key einen neuen Datentyp (bzw. eine Klasse) anlegen, deren konkrete Instanzen solche Assoziationen speichern können. Beachte, dass dieser neue Typ hashable sein muss. Das heißt, die Methoden __hash__ und __eq__ müssen implementiert werden.

Weise dem Key ein Magic Word zu z.. !hallo?:

Bei vorkommen so eines Magic words greifst du auf eine von dir erstelle Synonym Klasse zu.

Wobei ich natürlich nicht weiß was du eigentlich vorhast


Doendn 
Beitragsersteller
 16.04.2020, 17:47

Ich meine zb keywords = {['hallo', 'hi'] : 'Hallo'}, aber mit einer liste funktioniert das halt nicht deswegen habe ich mich gefragt wie es denn geht

0
Kiboman  16.04.2020, 17:55
@Doendn

Leider kenne ich mich mit phyton selbst zu wenig aus.

Aber eine T-List in einem dictionary müsste doch funktionieren.

0

Du hast ein Dict mit den Worten zu einem Integer.

Und ein Dict was aus deinen Integern die Antworten macht.

Also wäre dann:

Dict1:
"hallo" -> 1
"hi" -> 1
"hey" -> 1
"Ciao" -> 2
"Bye" -> 2
"Bis dann" -> 2

Dict2:
1 -> "Auch Hallo"
2 -> "bye"
Woher ich das weiß:Berufserfahrung – Softwareentwicklerin

Ich würde dafür ein Set (oder eine Liste) verwenden und überprüfen ob die Begrüßung darin vorkommt.

Bsp.:

Set = {'hallo', 'hi', 'sowie noch mehr Begrüßungen'}
s = 'hallo'
if s in Set:
        print('Hallo')

# Ausgabe: Hallo

oder als Funktion:

def gruss(s):
        Liste = ['hallo', 'hi', 'sowie noch mehr Begrüßungen']
        if s in Liste:
                print('Hallo')

s = 'sowie noch mehr Begrüßungen'
gruss(s)
# Ausgabe: Hallo

Lamanini  16.04.2020, 18:52

Wobei man da ja für jede Möglichkeit ein eigenes if machen müsste.

0
andie00  16.04.2020, 19:03
@Lamanini

Wie meinst du das?

Du brauchst doch nur ein if um zu überprüfen ob der String in der Liste der Begrüßungen vorkommt.

0
Lamanini  16.04.2020, 19:26
@andie00

Wenn ich jetzt nicht nur einen Gruß, sondern auch noch ein bye haben möchte, müsste ich ja das ganze nochmal machen, nur anstatt print("hallo") dann mit bye.

0