Dictionary mit Referenz auf Liste

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
chrische
User
Beiträge: 2
Registriert: Montag 25. Oktober 2010, 18:48

Hallo,
ich bin neu in sachen Python und hoffe ihr könnt mir meine Frage beantworten.

Wie man der Überschrift entnehmen kann geht es darum das ich gerne ein Dictionary anlegen würde,
das als Wert eine Referenz auf eine Liste hällt.

Ich stelle mir vor, dass es in etwa so ausschaut:

Code: Alles auswählen

list_1 = []
list_2 = []
Dictionary = {
                  key1 = referenz_auf_list_1
                  key2 = referenz_auf_list_2
                  usw...
             }
Es sollte dazu dienen mit einem Key auf alle Werte der Liste zugreifen zu können.
Praktisch wäre es auch wenn ich die Listen nicht vorher definieren müsste, sondern das sie sich irgendwie dynamisch
zusammen mit den Keys in der Dictionary erzeugen ließen. Das ist aber erstmal nicht so wichtig, wichtiger ist erstmal
die erste Frage.
Ich hoffe das ist verständlich erklärt falls nicht versuche ich es nochmal besser zu erklären.

Danke schonmal für Antworten.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Deine Pseudo-Syntax war schon fast richtig:

Code: Alles auswählen

d = {
    "k1": [],
    "k2": []
}
d["k1"].append(1)
print(d["k1"][0])
Stefan
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du suchst ein defaultdict aus dem collections-Modul:

Code: Alles auswählen

In [1]: from collections import defaultdict

In [2]: d = defaultdict(list)

In [3]: d
Out[3]: defaultdict(<type 'list'>, {})

In [4]: d.fromkeys(("foo", "bar"))
Out[4]: defaultdict(None, {'foo': None, 'bar': None})

In [6]: d["foo"]
Out[6]: []

In [7]: d["foo"].append(1)

In [8]: d["foo"].append(42)

In [9]: d["foo"]
Out[9]: [1, 42]
edit: Och menno sma... wieder schneller :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Das `fromkeys()` hat da aber nicht wirklich etwas zu suchen, denn das ist eine Methode auf `defaultdict` die ein *neues* `defaultdict`-Objekt erzeugt. Also ein alternativer "Konstruktor". Den Aufruf würde ich nicht auf Exemplaren machen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

*seufz* Hast natürlich recht... ist heut nicht mein Tag ;-)

Code: Alles auswählen

defaultdict.fromkeys(("foo", "bar"), list)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten