if a,b in dictionary möglich?

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
gooogle
User
Beiträge: 66
Registriert: Freitag 15. Mai 2009, 19:13
Wohnort: burghausen

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
fff gh
gooogle
User
Beiträge: 66
Registriert: Freitag 15. Mai 2009, 19:13
Wohnort: burghausen

danke :)
fff gh
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Wenn ich dich richtig verstehe könntest du auch

Code: Alles auswählen

if a.has_key(z) and a.has_key(y):
meinen
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Pascal hat geschrieben:Wenn ich dich richtig verstehe könntest du auch

Code: Alles auswählen

if a.has_key(z) and a.has_key(y):
meinen
Warum denn `has_key`?

Alternativ eine eigene Funktion, die das überprüft.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Code: Alles auswählen

all(key in a for key in (y, z))
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Nett, dieses all-Statement, ich kannte das noch gar nicht. Wenn sich sonst noch wer dafür interessiert: http://eikke.com/python-all-odity/
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

"in" anstatt ".has_key"
In Py3 gibt es has_key nicht mehr
the more they change the more they stay the same
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ich finde es so leserlicher:

Code: Alles auswählen

>>> a = { "11": "aa", "22": "bb", "33": "cc"}
>>> set(("11", "33")).issubset(set(a))
True
BlackJack

@philistion: `all()` ist kein Statement sondern eine ganz normale Funktion. Wenn's die nicht gäbe, könnte man sie einfach selbst schreiben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also altmodisch und ganz einfach wäre wohl:

Code: Alles auswählen

if y in a and z in a:
Warum so umständlich?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja, das ist mir auch klar ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten