Seite 1 von 1
if a,b in dictionary möglich?
Verfasst: Dienstag 2. März 2010, 21:25
von gooogle
Hello
ist es möglich nach zwei parametern zu suchen und auszugeben in der form?:
Code: Alles auswählen
y="11"
z="33"
a = { "11": "aa", "22": "bb", "33": "cc"}
if y,z in a:
print a[y]
print a[z]
else:
print y, z
grüsse
Verfasst: Dienstag 2. März 2010, 21:26
von lunar
Nein.
Verfasst: Dienstag 2. März 2010, 21:34
von gooogle
danke

Verfasst: Dienstag 2. März 2010, 22:06
von Pascal
Wenn ich dich richtig verstehe könntest du auch
meinen
Verfasst: Dienstag 2. März 2010, 22:11
von jbs
Pascal hat geschrieben:Wenn ich dich richtig verstehe könntest du auch
meinen
Warum denn `has_key`?
Alternativ eine eigene Funktion, die das überprüft.
Verfasst: Mittwoch 3. März 2010, 01:00
von snafu
Verfasst: Mittwoch 3. März 2010, 09:35
von philistion
Nett, dieses all-Statement, ich kannte das noch gar nicht. Wenn sich sonst noch wer dafür interessiert:
http://eikke.com/python-all-odity/
Verfasst: Mittwoch 3. März 2010, 11:39
von snafu
Naja, die Funktionsweise steht ja eigentlich auch in der Doku. Faustregel: `all` für viele ähnliche `and`s und `any` für viele ähnliche `or`s.
Verfasst: Mittwoch 3. März 2010, 14:00
von Dav1d
"in" anstatt ".has_key"
In Py3 gibt es has_key nicht mehr
Verfasst: Mittwoch 3. März 2010, 21:48
von Zap
Ich hatte vor kurzem etwas ähnliches. Auf die Idee mit all() bin ich zu dem Zeitpunkt nicht gekommen.
Hatte letzten Endes eine Lösung mit sets verwendet.
Code: Alles auswählen
In [9]: y="11"
In [10]: z="33"
In [11]: a = { "11": "aa", "22": "bb", "33": "cc"}
In [12]: if set((y, z)) <= set(a):
....: print "yes"
....:
....:
yes
Finde die Lösung mit all() aber auch sehr gut.
Verfasst: Mittwoch 3. März 2010, 21:57
von derdon
Ich finde es so leserlicher:
Code: Alles auswählen
>>> a = { "11": "aa", "22": "bb", "33": "cc"}
>>> set(("11", "33")).issubset(set(a))
True
Verfasst: Mittwoch 3. März 2010, 22:35
von BlackJack
@philistion: `all()` ist kein Statement sondern eine ganz normale Funktion. Wenn's die nicht gäbe, könnte man sie einfach selbst schreiben.
Verfasst: Mittwoch 3. März 2010, 23:20
von Leonidas
BlackJack hat geschrieben:@philistion: `all()` ist kein Statement sondern eine ganz normale Funktion. Wenn's die nicht gäbe, könnte man sie einfach selbst schreiben.
Naja, ``print`` könnte man sich auch selbst schreiben, wenn es das nicht gäbe, insofern ist eine Unterscheidung nachdem ob es selbst nachschreibbar ist oder nicht kein gutes Kriterium um Statements von dem Rest abzuheben.
Verfasst: Donnerstag 4. März 2010, 00:57
von BlackJack
@Leonidas: Wie willst Du die ``print``-Anweisung (Statement) denn selbst schreiben? Ich meine jetzt nicht als Funktion sondern eben das *Statement*!? Das ist eigene Syntax. `all` ist einfach nur ein Name der an eine Funktion gebunden ist.
Verfasst: Donnerstag 4. März 2010, 08:14
von jens
Also altmodisch und ganz einfach wäre wohl:
Warum so umständlich?
Verfasst: Donnerstag 4. März 2010, 13:27
von snafu
jens hat geschrieben:Warum so umständlich?
Weil deine Idee für 7-8 weitere Werte eher bescheiden aussieht. Aber man
könnte es auch so machen. Das stimmt.
Verfasst: Donnerstag 4. März 2010, 16:28
von jens
Ja, das ist mir auch klar
