Element in Dictionary einfügen...?

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
MKK
User
Beiträge: 10
Registriert: Dienstag 19. April 2005, 11:38
Kontaktdaten:

Hi!
Wenn ich ein Dictionary erstelle und auslese, bekomme ich folgendes Ergebnis

Code: Alles auswählen

d={"kuh":"muh"}
print d.get('kuh','not found')
#Ausgabe
muh
Fülle ich das Dictionary jedoch wie folgt, dann sieht die Ausgabe anders aus. :? Warum das?

Code: Alles auswählen

theIndex = {}  
def addToDict(word, pagenumber):
  if theIndex.has_key(word):
    theIndex[word].append(pagenumber)
  else:
    theIndex[word] = [pagenumber]
  print theIndex.get('kuh', 'not found')
addToDict("kuh","muh")
#Ausgabe
['muh']
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MKK hat geschrieben:Fülle ich das Dictionary jedoch wie folgt, dann sieht die Ausgabe anders aus. :? Warum das?
Ganz einfach! Du fügst mit theIndex[word] = [pagenumber] eine Liste hinzu. Das heißt, du nimmst pagenumber, baust eine Liste drumrum und tust dann diese Liste ins Dictionary hinzufügen.

So gehts so wie du willst:

Code: Alles auswählen

theIndex = {} 
def addToDict(word, pagenumber):
    if theIndex.has_key(word):
        theIndex[word].append(pagenumber)
    else:
        theIndex[word] = pagenumber
    
    print theIndex.get('kuh', 'not found')
addToDict("kuh", "muh")
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MKK
User
Beiträge: 10
Registriert: Dienstag 19. April 2005, 11:38
Kontaktdaten:

:) danke!
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

öhm irgendwie machen deine 2 Versionen nicht dasselbe.

Was willst du denn machen?
Weil dein "muh" hat keine append Methode, da müsste schon eine Liste hin.

Wolltest du sowas machen?

Code: Alles auswählen

{
'hallo':[1,10,14],
'test':[2,10,11]
}
Also 'hallo' kommt auf den Seiten 1,10 und 14 vor?

Dann würde deine Version ja stimmen, bei Leonidas' version gibt ein 2. Aufruf von addToDict("kuh", "muh") eine Exception dass es keine append Methode gibt.

Code: Alles auswählen

theIndex = {} 
def addToDict(word, pagenumber):
  if theIndex.has_key(word):
    theIndex[word].append(pagenumber)
  else:
    theIndex[word] = [pagenumber]
  print theIndex.get(word, 'not found')
addToDict("kuh",1) 
addToDict("kuh",10) 
addToDict("kuh",13) 

gruess
BlackJack

rayo hat geschrieben:

Code: Alles auswählen

theIndex = {} 
def addToDict(word, pagenumber):
  if theIndex.has_key(word):
    theIndex[word].append(pagenumber)
  else:
    theIndex[word] = [pagenumber]
  print theIndex.get(word, 'not found')
addToDict("kuh",1) 
addToDict("kuh",10) 
addToDict("kuh",13)
Das kann man auch so schreiben:

Code: Alles auswählen

the_index = dict()
def addToDict(index, word, pagenumber):
  index.setdefault(word, list()).append(pagenumber)
  print index[word]

addToDict(index, "kuh", 1) 
addToDict(index, "kuh", 10) 
addToDict(index, "kuh", 13)
Antworten