Seite 1 von 1
Dictionary mit mehren Keys
Verfasst: Montag 26. Juli 2010, 13:54
von p90
Hi,
hab ein kleines Problem und keine Ahnung wie ich es implementieren soll.
Habe Daten in dieser Form: Option1_Option2_Option3_Option4 =Wert
Dabei sind Option 1-4 jeweils Strings.
Suche nun eine Möglichkeit z.B. Option1 = Weis zu setzen und dann alle Werte die Option1 = weis haben zu ploten oder weiter zu verarbeiten.
Dabei muss nicht nur eine Option gesetzt sein, sonder z.B. auch zwei Option3 und Option4 z.B.
Insbesondere das sie nicht von "oben" also wenn O2 gesetzt ist ist auch O1 gesetzt gewählt werden sehe ich als Problem.
Ansonsten könnte ich ja einfach ein Dictionary verwenden.
Hat jemand eine Idee wie ich das hier machen kann?
MfG
p90
Re: Dictionary mit mehren Keys
Verfasst: Montag 26. Juli 2010, 13:57
von Rebecca
Das klingt nach einem Anwendungsfall fuer sqlite.
Re: Dictionary mit mehren Keys
Verfasst: Montag 26. Juli 2010, 14:01
von EyDu
Hallo.
Ich würde einfach sqlite benutzen. Da deine Daten eh in den Hauptspeicher passen, kannst du die Datenbank einfach im Hauptspeicher erzeugen.
Als Alternative einfach ein Tupel mit 5 Einträgen (o1, o2, o3, o4, value), die filter-Funktion und eine Prädikat.
Sebastian
Re: Dictionary mit mehren Keys
Verfasst: Mittwoch 28. Juli 2010, 10:31
von sma
Ich habe das jetzt 2x gelesen und verstehe das Problem immer noch nicht. Soll das hier gehen?
Soll also ein Wert unter mehr als einem Schlüssel abgelegt werden können? Das könnte man so machen:
Code: Alles auswählen
class X:
def __init__(self): self.values = {}
def register(self, *keys):
h = [None]
for k in keys: self.values[k] = h
def __getitem__(self, key): return self.values[key][0]
def __setitem__(self, key, value): self.values[key][0] = value
Stefan
Re: Dictionary mit mehren Keys
Verfasst: Mittwoch 28. Juli 2010, 10:42
von EyDu
sma hat geschrieben:Ich habe das jetzt 2x gelesen und verstehe das Problem immer noch nicht. Soll das hier gehen?
Ich habe es so verstanden:
Code: Alles auswählen
x[1, 1] = "11"
x[1,2] = "12"
x[2,1] = "21"
assert x[1,None] == ["11", "12"]
assert x[2,None] == ["21"]
assert x[1,2] == ["12"]
Oder eben allgemeiner:
Code: Alles auswählen
def equals(v): return lambda x: x==v
anyvalue = lambda x : True
assert x[equals(1), anyvalue] == ["11", "12"]
assert x[equals(1), equals(2)] == ["12"]
Re: Dictionary mit mehren Keys
Verfasst: Mittwoch 28. Juli 2010, 10:56
von Hyperion
Ich habe ihn einfach so verstanden:
Code: Alles auswählen
In [1]: data = (
...: ("a", "b", 42),
...: ("a", None, 33),
...: (None, "b", 69)
...: )
In [4]: print filter(lambda x: x[0] == "a" and x[1] == "b", data)
------> print(filter(lambda x: x[0] == "a" and x[1] == "b", data))
(('a', 'b', 42),)
In [5]: print filter(lambda x: x[0] == "a" or x[1] == "b", data)
------> print(filter(lambda x: x[0] == "a" or x[1] == "b", data))
(('a', 'b', 42), ('a', None, 33), (None, 'b', 69))
Aber die Beschreibung ist schon wenig präzise, da gebe ich sma recht.
Re: Dictionary mit mehren Keys
Verfasst: Mittwoch 28. Juli 2010, 22:15
von p90
Hi,
wenn ich das richtig sehe meine ich es genauso wie Hyperion nur das ich nicht immer gleich viele Optionen habe.
Sqlite ist denke ich genau das richtige.