Dictionary

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
norgsmen
User
Beiträge: 55
Registriert: Samstag 26. Juni 2021, 22:09

Code: Alles auswählen

salutationsDict = {"de": "Keine Angabe", "de":"Frau", "de":"Mann", "en":"not specified", "en":"mrs", "en":"mr"}

germanList = []
englishList = []

for k,v in salutationsDict.items():
    if k == 'de':
        germanList.append(k)

print(germanList)
    
Hi, Leute ich laufe hier mit k und v über ein dictionary durch. Dann frage ich ab, ob k == v ist und wenn das der Fall ist, soll der erste Wert von k an meine Liste germanList angehängt werden. Es wird aber immer nur ein Wert an die Liste angehängt. Ich würde dreimal 'de' erwarten da 'de' auch dreimal in der Liste vorkommt.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wieso erwartest du, das für den gleichen Schlüssel drei verschiedene Werte vorliegen? Ein dict ordnet einem Schlüssel einen Wert zu. Schon immer. Du kannst als Werte Listen benutzen, um mehrere vorzuhalten.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Hast Du Dir den Inhalt von salutationsDict angeschaut?

Code: Alles auswählen

{'de': 'Mann', 'en': 'mr'}
Das Wörterbuch enthält nur zwei Einträge, weil es für jeden Key nur einmal geben kann und die nachfolgenden Definitionen die vorherigen ersetzen.
Für Deine Problem ist also so ein Wörterbuch die falsche Datenstruktur, du brauchst ja etwas, das zu jedem Begriff sowohl den Deutschen als auch die Englische Übersetzung zuordnet.

Variablennamen schreibt man generell klein und Typen haben in Namen nichts zu suchen.

Code: Alles auswählen

salutations_de_to_en = {
    "Keine Angabe": "not specified",
    "Frau": "mrs",
    "Mann": "mr",
}
print(list(salutations_de_to_en.keys()))
Antworten