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

Element in Dictionary einfügen...?

Beitragvon MKK » Mittwoch 20. April 2005, 11:43

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']
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Element in Dictionary einfügen...?

Beitragvon Leonidas » Mittwoch 20. April 2005, 13:18

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

Beitragvon MKK » Mittwoch 20. April 2005, 13:29

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

Beitragvon rayo » Mittwoch 20. April 2005, 17:48

ö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

Beitragvon BlackJack » Mittwoch 20. April 2005, 22:18

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)

Wer ist online?

Mitglieder in diesem Forum: Joshuah992