Seite 1 von 1

Element in Dictionary einfügen...?

Verfasst: Mittwoch 20. April 2005, 11:43
von MKK
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']

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

Verfasst: Mittwoch 20. April 2005, 13:18
von Leonidas
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")

Verfasst: Mittwoch 20. April 2005, 13:29
von MKK
:) danke!

Verfasst: Mittwoch 20. April 2005, 17:48
von rayo
ö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

Verfasst: Mittwoch 20. April 2005, 22:18
von 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)