Mehre Zahlen einem String zuweisen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
wese85
User
Beiträge: 8
Registriert: Dienstag 28. August 2018, 11:51

Hallo

Ich würde gerne einer Liste von Zahlen einen String zuordnen z.B (1,2,3) = 'Hallo'; (4,9,7) = 'Test'
sodass wenn ich nun die 9 wähle das Wort 'Test' herauskommt.
Ich hab es schon mit Dictionarys versucht diese lassen aber nur eine Zahl zu.

gruß wese
Benutzeravatar
__blackjack__
User
Beiträge: 14031
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@wese85: Dictionary ist schon der richtige Ansatz, Du musst halt jede einzelne Zahl dem jeweiligen Wort zuordnen.

Code: Alles auswählen

In [5]: d = dict()

In [6]: for ns, v in [((1, 2, 3), 'Hallo'), ((4, 9, 7), 'Test')]:
   ...:     for n in ns:
   ...:         d[n] = v
   ...:         

In [7]: d
Out[7]: {1: 'Hallo', 2: 'Hallo', 3: 'Hallo', 4: 'Test', 9: 'Test', 7: 'Test'}

In [8]: d[9]
Out[8]: 'Test'
Zuletzt geändert von __blackjack__ am Dienstag 28. August 2018, 12:04, insgesamt 1-mal geändert.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein dict ist aber trotzdem die richtige Loesung. Es ordnet einem Schluessel einen Wert zu. Wenn du mehrere Schluessel hast, denen du den gleichen Wert zuweisen willst, dann machst du das halt:

Code: Alles auswählen

d = {}
d[1] = 'Hallo'
d[2] = 'Hallo'
d[3] = 'Hallo'
Wenn man das ganze etwas kompakter haben will, kann man sich natuerlich auch Hilfsfunktion schreiben:

Code: Alles auswählen

def multikeydict(items):
       res = {}
       for keys, value in items:
             for key in keys:
                   assert key not in res
                   res[key] = value
       return res

d = multikeydict(
     [
         ((1, 2, 3), "Test"),
         ((4, 5, 6), "Foo"),
     }
)
wese85
User
Beiträge: 8
Registriert: Dienstag 28. August 2018, 11:51

Danke Sehr!

Möglichst kompakt war das Stichwort!
Sirius3
User
Beiträge: 18266
Registriert: Sonntag 21. Oktober 2012, 17:20

Möglichst kompakt sieht so aus:

Code: Alles auswählen

def multikeydict(items):
   return {key: value for keys, value in items for key in keys}
Antworten