Seite 1 von 1

Dictionary mit Referenz auf Liste

Verfasst: Montag 25. Oktober 2010, 19:08
von chrische
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.

Re: Dictionary mit Referenz auf Liste

Verfasst: Montag 25. Oktober 2010, 19:13
von sma
Deine Pseudo-Syntax war schon fast richtig:

Code: Alles auswählen

d = {
    "k1": [],
    "k2": []
}
d["k1"].append(1)
print(d["k1"][0])
Stefan

Re: Dictionary mit Referenz auf Liste

Verfasst: Montag 25. Oktober 2010, 19:17
von Hyperion
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

Re: Dictionary mit Referenz auf Liste

Verfasst: Montag 25. Oktober 2010, 19:32
von 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.

Re: Dictionary mit Referenz auf Liste

Verfasst: Montag 25. Oktober 2010, 19:37
von Hyperion
*seufz* Hast natürlich recht... ist heut nicht mein Tag ;-)

Code: Alles auswählen

defaultdict.fromkeys(("foo", "bar"), list)