Seite 1 von 1
verschachtelte datenstrukturen & dynam parameterübergabe
Verfasst: Montag 30. April 2007, 15:28
von roakin
ich habe 2 anfängerfragen ... ich habe in einem dictionary mehrere listen abgelegt also ungefähr so
Code: Alles auswählen
elemName = 'txt'
myDict[elemName] = ['txt1', 'txt2', 'txt3', 'txt4', 'txt5']
jetzt will ich aber an diese liste nachträglich was dranhängen bzw auch überprüfen ob in myDict[elemName] schon was drinnen steht oder nicht aber ich kann da scheinbar nicht mehr richtig auf die liste zugreifen
geht jedenfalls nicht
die 2te frage die ich habe ist folgende: ich habe eine funktion mit einer beliebigen anzahl parameter, also
jetzt muss ich diese funktion aber rekursiv aufrufen und weißt nicht wie ich da den funktionsaufruf mit den parametern füttern kann, da ich ja nicht weiß wieviele das sind
vielen dank im voraus,
stefan
Re: verschachtelte datenstrukturen & dynam parameterüber
Verfasst: Montag 30. April 2007, 15:36
von EnTeQuAk
ich habe 2 anfängerfragen ...
Hmm -- hört doch mal auf, immer nach "anfängerfragen" zu fragen. Was definiert denn eine Anfängerfrage? Vielleicht ist es ja doch was größeres?
Mann... Selbstvertrauen! --> Frage ist Frage

Ob anfänger oder nicht ist egal *g*
So, zum Thema:
roakin hat geschrieben:ich habe in einem dictionary mehrere listen abgelegt also ungefähr so
Code: Alles auswählen
elemName = 'txt'
myDict[elemName] = ['txt1', 'txt2', 'txt3', 'txt4', 'txt5']
jetzt will ich aber an diese liste nachträglich was dranhängen bzw auch überprüfen ob in myDict[elemName] schon was drinnen steht oder nicht aber ich kann da scheinbar nicht mehr richtig auf die liste zugreifen
geht jedenfalls nicht
Geht jawohl!
Code: Alles auswählen
>>> d = {'la': 'lu', 'txt': ['ich', 'du', 'er', 'sie']}
>>> d
{'txt': ['ich', 'du', 'er', 'sie'], 'la': 'lu'}
>>> d['txt'].append('es')
>>> d
{'txt': ['ich', 'du', 'er', 'sie', 'es'], 'la': 'lu'}
Oder habe ich deine Absicht falsch verstanden?
€dit:
Ich sehe gerade, das du geschrieben hast 'newList'. Dann währe folgendes angebracht:
Code: Alles auswählen
>>> d = {'la': 'lu', 'txt': ['ich', 'du', 'er', 'sie']}
>>> d
{'txt': ['ich', 'du', 'er', 'sie'], 'la': 'lu'}
>>> d['txt'].extend(['es', 'wir', 'ihr', 'sie'])
>>> d
{'txt': ['ich', 'du', 'er', 'sie', 'es', 'wir', 'ihr', 'sie'], 'la': 'lu'}
die 2te frage die ich habe ist folgende: ich habe eine funktion mit einer beliebigen anzahl parameter, also
jetzt muss ich diese funktion aber rekursiv aufrufen und weißt nicht wie ich da den funktionsaufruf mit den parametern füttern kann, da ich ja nicht weiß wieviele das sind
ehm... was spricht gegen
Verfasst: Montag 30. April 2007, 15:38
von EyDu
Anhängen an eine Liste geht mit "append" (einzelnes Elemente)
Anhängen von liste2 an liste1 machst du mit "extend":
Prüfen ob Elemente in einer Liste entahlten sind:
Code: Alles auswählen
if liste:
print "Liste hat Elemente"
else:
print "Liste hat keine Elemente"
Für dich könnte die Methode "get" (für Dictionaries) noch ganz interessant sein. An Stelle von Listen, sind bei dir eventuell auch Mengen (set) geeigneter.
Zur zweiten Frage:
Verfasst: Montag 30. April 2007, 15:40
von BlackJack
Das Anhängen funktioniert:
Code: Alles auswählen
In [16]: my_dict = dict()
In [17]: my_dict['txt'] = ['txt1', 'txt2', 'txt3', 'txt4', 'txt5']
In [18]: my_dict
Out[18]: {'txt': ['txt1', 'txt2', 'txt3', 'txt4', 'txt5']}
In [19]: my_dict['txt'].append('txt6')
In [20]: my_dict
Out[20]: {'txt': ['txt1', 'txt2', 'txt3', 'txt4', 'txt5', 'txt6']}
Wenn angehängt werden soll, falls der Schlüssel existiert, und eine neue Liste mit dem Wert angelegt werden soll, falls der Schlüssel nicht existiert, kann man die `setdefault()`-Methode benutzen:
Code: Alles auswählen
In [21]: my_dict.setdefault('txt', list()).append('txt7')
In [22]: my_dict
Out[22]: {'txt': ['txt1', 'txt2', 'txt3', 'txt4', 'txt5', 'txt6', 'txt7']}
In [23]: my_dict.setdefault('spam', list()).append('spam1')
In [24]: my_dict
Out[24]:
{'spam': ['spam1'],
'txt': ['txt1', 'txt2', 'txt3', 'txt4', 'txt5', 'txt6', 'txt7']}
Zur zweiten Frage: Variable Anzahl von Argumenten sollte man im allgemeinen nicht benutzen wenn es ein Argument in Form einer Liste auch tut.
Verfasst: Montag 30. April 2007, 15:55
von roakin
erstmal vielen dank für die schnellen antworten. problem 2 hat sich jetzt erledigt (darauf hätt ich auch selber kommen müssen) ... beim 1ten problem ist es bei mir daran gescheitert, dass ich die liste im dictionary nicht richtig initialisiert habe ... aber jetzt klappt alles
also noch einmal vielen dank ... ist echt ein super forum hier