Dictionary append

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
roark
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2014, 10:04

Hallo zusammen,

ich bin neu hier im Forum-Forum und hoffe meine Frage ist hier im richtigen Bereich. Gleich zu beginn muss ich sagen, dass ich weder ein Held im Programmieren, noch in Python speziell bin. Ich möchte gerade ein kleines Projekt umsetzen und hoffe ihr könnt mir hierbei behilflich sein.

Kurz zu dem Projekt: ich versuche gerade mit Python / Django eine Webseite zu erstellen um den Funktionsumfang von API's anschaulich darzustellen.

Hier meine aktuelle Problemstellung: ich würde gerne mein Dictionary mittels der if-schleife um die werte "var":"var" erweitern. Das funktioniert leider nicht so wie ich mir das vorstelle ... ich hoffe es kann mir hier jemand weiterhelfen. Falls ihr noch weitere Informationen braucht, lasst es mich wissen und ich werde diese natürlich ergänzen. Vielen Dank !!!
Code:

Code: Alles auswählen

...

dic = {}
if eingabefeld != "": 
    dic.update({"var":"var})

dic = {"var1":"var1", "var2":"var2"}

cloudstack.apicall(dic)

...
Zuletzt geändert von Anonymous am Sonntag 27. Juli 2014, 10:25, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo roark,
ich verstehe Deine Frage nicht: Du tust doch genau das, was Du willst, das Dictionary um einen Key "var" erweitern. Was willst Du konkret erreichen? Was hast Du an realem Code und was ist das Ergebnis, das Du gerne hättest aber nicht bekommst?

Das geht übrigens per Eckige Klammern viel einfacher:

Code: Alles auswählen

dic = {}
if eingabefeld:
    dic['var'] = 'var'
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Was meinst Du mit "funktioniert nicht"?

Code: Alles auswählen

>>> d = {}
>>> d.update({'A': 'a'})
>>> d
{'A': 'a'}
>>> d.update((('A', 'aa'), ('B', 'b'))
... )
>>> d
{'A': 'aa', 'B': 'b'}
>>> d['C'] = 'c'
>>> d
{'A': 'aa', 'C': 'c', 'B': 'b'}
Wie Du siehst, kannst Du auch mehrere key/value Paare übergeben. Damit kannst Du Dir eine Schleife mit ``if these != that`` sparen...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
BlackJack

http://if-schleife.de/

Nur mal so der Vollständigkeit halber… ;-)

Vielleicht sollte man auch mal `dic` vor und nach Zeile 7 ausgeben lassen und über den Effekt von dieser Zeile nachdenken. :-)
roark
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2014, 10:04

Danke für die schnellen Antworten.

Die if-schleifen soll überprüfen ob ein bestimmtes Eingabefeld eines Formular's leer ist oder nicht. Wenn dieses Eingabefeld nicht leer ist (if eingabefeld != ""), soll das Dictionary um eine variable erweitert werden. Leider funktioniert das weder mit der von mir aufgezeigten .update Funktion, noch mit der von Sirius3 genannten Funktion. Habe ich beides schon ausprobiert ...

Aber wenn die Funktion um das Dictionary zu erweitern richtig ist, kann es nur an der Schleife liegen. Muss ich am Montag wenn ich wieder in der Arbeit bin, wohl mal checken...
bb1898
User
Beiträge: 219
Registriert: Mittwoch 12. Juli 2006, 14:28

roark hat geschrieben:Danke für die schnellen Antworten.
Ich fürchte, Du hast sie vor allem schnell (und zu flüchtig) gelesen. Insbesondere die letzte von BlackJack, die hat sich in Deinem Beitrag überhaupt nicht niedergeschlagen. Nimm sie noch mal gründlich zur Kenntnis, dann bist Du schon erheblich weiter.
roark
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2014, 10:04

Sorry, hab den Eintrag von BlackJack aus welchem Grund auch immer garnicht gelesen :cry:

Habe das ganze mal ausgetestet und es muss wohl an den if-Abfragen liegen.

Das Problem ist in meinen Augen, das ich den leeren Rückgabe wert falsch definiert habe. Bei dem Rückgabe wert handelt es sich um ein leeres eingabefeld eines Formulars.

Kann mir einer von euch sagen, wie man das in der Abfrage richtig darstellt?

Danke
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

roark hat geschrieben: Habe das ganze mal ausgetestet und es muss wohl an den if-Abfragen liegen.
Wie kommst Du darauf? Hast Du BlackJacks Ratschlag einmal befolgt? Ist Dir jetzt klar, was Zeile 7 in Deinem ersten Posting macht und wieso das ein Problem verursacht?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
roark
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2014, 10:04

Ja ist mir klar. Trägt nur nicht sonderlich zur Lösung meines Problems bei ...

Aber sicher kannst du mir auch meine Frage beantworten wie man einen leeren Rückgabe wert eines Eingabefelds in Python darstellt, dann wäre ich schon einen großen Schritt weiter.
BlackJack

@roark: Probier das doch einfach aus. Du trägst nix ein und lässt Dir dann ausgeben wie das beim Server ankommt.
Antworten