gespeicherte liste in dictionary als liste ausgeben und nutz

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
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Hi Alle,

ich habe ein Dictionary angelegt und wollte dort gespeicherte Einträge nutzen.

Code: Alles auswählen

    defaultSettings = {'maxitems':100,'rastertime':0.02,
                       'f_dat':'peakswerteundzeit.dat','PATHDAT':'../../../',
                       'showBands':["0","1","2"]}
    . . .
    settingDict = defaultSettings
    . . .
    self.showBands = settingDict['showBands']
    . . . 

    def computetransientall(self,min,max):
        listPeaks=[]
        listSamples=[]
        for i in self.showBands:
            i=int(i)
            listPeaks.append((self.list_arraypeaks[i][min:max]*np.abs(self.list_arraySamples[i][min:max]))+
                             self.list_arraypeaks[i][min:max])
            listSamples.append(self.list_arraySamples[i][min:max])
        t=self.arraytime[min:max]
        return t,listPeaks,listSamples
Wenn ich die Liste showBands nutzen will, so sieht er dies nicht als Liste an, sondern als Zeichenkette, und das erste Zeichen ist die eckige Klammer auf. Wie kann ich das ändern ? Ich habe jetzt schon mehrere Kombinationen durch, ohne Erfolg. Kann er im Dictionary nur unicode Typen speichern, oder auch int(),str(), list() ... ?

Ich habe noch ein bischen mehr code unter,
http://pastebin.com/mceed625
veröffentlicht, ich denke aber das dies eh zu viel ist und der Lösung des Problems nicht hilft, außer dass am Ende keiner mehr meinen Beitrag liest. :-)

Grüße Markus
Zuletzt geändert von feldmaus am Montag 29. Juni 2009, 14:11, insgesamt 3-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mit

Code: Alles auswählen

defaultSettings["showBands"]
kannst du auf die Liste zugreifen. Der gezeigte Code ist auf jeden Fall zu wenig, um den Fehler zu finden.

Es sollte auch besser "default_settings" heißen.

Als Werte in einem Dictionary kannst du beliebige Objekte speichern.
Das Leben ist wie ein Tennisball.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Ich habe im ersten Thread ein wenig mehr Code veröffentlicht. Die Fehlermeldung lautet,
ValueError: invalid literal for int() with base 10: '['

Wie ich schon sagte er sieht meinen Dictionary Eintrag nicht als Liste an, sondern als Zeichenkette. Verstehen tue ich es nicht. Hat da Jemand eine Idee was ich falsch mache ?

Grüße Markus
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

So bin jetzt ein Stück weiter und zwar kann ich mit meiner Applikation das Dictionary über TextCtrl Elemente nachträglich geändert werden, dabei muss er den Dictionary Eintrag [0,1,2] als Zeichenkette gespeichert haben. Hat da Jemand einen Tipp für mich wie ich das über grafische Elemente nachträglich bearbeiten und als Liste speichern kann ?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann zeig doch mal den Code, wo du den Fehler vermutest und verrate, welches Toolkit du benutzt. Sonst kann man nur raten.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Oeh, warum benutzt du ein TextCtrl, um eine Liste zu bearbeiten? Da gibt's doch bessere Widgets fuer.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

EyDu hat geschrieben:Dann zeig doch mal den Code, wo du den Fehler vermutest und verrate, welches Toolkit du benutzt. Sonst kann man nur raten.
Ich vermute das es sich um mein TextCtrl Element handelt welches in meiner Klasse Settings() enthalten ist(Zeile 34),
http://pastebin.com/m40dc1b8a

@Rebecca
Ich nutze wx, was wäre da denn besser um Listen in Dictionaries nachträglich zu bearbeiten ? Außerdem wollte ich mich in der Länge der Liste nicht fest legen. Die Liste kann also mal länger oder auch kürzer sein.

Grüße Markus
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wenn du den Wert auf

Code: Alles auswählen

value=str(self.settingDict['showBands'])
setzt, was erwartest du, was da für ein Typ rauskommt?
feldmann_markus hat geschrieben:Ich nutze wx, was wäre da denn besser um Listen in Dictionaries nachträglich zu bearbeiten ? Außerdem wollte ich mich in der Länge der Liste nicht fest legen. Die Liste kann also mal länger oder auch kürzer sein.
Vielleicht ListCtrl? ;-)

Du solltest deine Daten nicht in der GUI verwalten, das erzeugt sehr unsauberen Code.
Das Leben ist wie ein Tennisball.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Ich werde mir das mit str() nochmal angucken, aber soweit ich mich erinnern kann benötigt TextCtrl string() und nix anderes. Ansonsten gibt es Fehlermeldungen. Deshalb habe ich ja auch str() benutzt.

ListCtrl ist mir nicht flexibel genug, bzw. zu umständlich. Die Länge meiner Liste wollte ich nicht fest legen.

Grüße Markus
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ja, TextCtrl benötigt einen String. Aber aus der Liste einen String (mittels str) machen ist keine vernünftige Lösung. Akzeptabel, für einen Benutzer, sind vielleicht noch durch Kommas/Semikolons getrennte Werte. Dann muss die Liste aber auch entsprechende vorbereitet und das Steuerelement wieder ausgewertet werden.

Bei einem ListCtrl musst du dich doch auch nicht auf die Länge der Liste festlegen. Für jeden Eintrag in der Liste eine Zeile und dazu vielleicht noch ein Löschen-Button. Zum Einfügen kann man dann entweder auf eine Leere Zeile klicken, oder man bietet ein extra Feld an. So aufwendig finde ich das gar nicht.
Das Leben ist wie ein Tennisball.
Antworten