List-Item aus einem List-Item aufrufen

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
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

Ich habe ein Problem,

ich möchte ein ListItem aus einem ListItem aufrufen:

Code: Alles auswählen

SPWatchtypes = {'international': 1, 'german': 5, 'classics': 3, 'soap': 2}
SPTranslations = {'international': __LS__(30120), 'german': __LS__(30121), 'classics': __LS__(30122), 'soap': __LS__(30123)}

Code: Alles auswählen

if methode=='show_select_dialog':
    writeLog('Methode: show select dialog', level=xbmc.LOGDEBUG)
    dialog = xbmcgui.Dialog()
    cats = [__LS__(30120), __LS__(30121), __LS__(30122), __LS__(30123), __LS__(30116)]
    ret = dialog.select(__LS__(30011), cats)
wenn nun in der GUI eine category gewäht wird soll der def Aufrug wie folg erfolgen:

Code: Alles auswählen

scrapeWLPage(SPWatchtypes[ret])
bei Auswahl von international also __LS__(30120) soll
(SPWatchtypes[ret]) eigendlich 1 ist er aber nicht so... ich bekomme immer eine Fehlermeldung
Error Type: <type 'exceptions.KeyError'>
Error Contents: (0,)
Traceback (most recent call last):
File "G:\KODI-Krypton\portable_data\addons\plugin.program.serienplaner\default.py", line 626, in <module>
scrapeWLPage(SPWatchtypes[ret])
KeyError: (0,)
BlackJack

@sveni_lee: Nun, ganz offensichtlich bekommst Du von dem `select()`-Aufruf keine Zahl sondern ein Tupel mit einer Zahl zurück. Und dazu kommt auch noch das `SPWatchtypes` als Schlüssel noch nicht einmal mit der *im* Tupel etwas anfangen könnte, weil dort Zeichenketten auf andere Werte abgebildet werden.
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

okay, würde es denn helfen, wenn ich der SPTranslation dem __LS__(30120) eine 1 zuordnen würde..
also

Code: Alles auswählen

SPTranslations = {1: __LS__(30120), 5: __LS__(30121),3: __LS__(30122), 2: __LS__(30123)}
und dann

Code: Alles auswählen

scrapeWLPage(SPTranslation[ret])
als Aufruf?
BlackJack

@sveni_lee: Was wäre denn `ret` in dem Fall? Weiterhin ein Tupel mit einer 0 drin? Was für einen Wert sollte das denn Deiner Meinung nach liefern?
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

hm, dann verstehe ich das nicht ganz...

Ich dachte 'SPTranslation' wäre dann der Schlüssel und würde dem Wert __LS__(30120) den Wert 1 zuweisen...
BlackJack

@sveni_lee: `SPTranslation` ist kein Schlüssel sondern ein Wörterbuch. Und in Wörterbüchern werden Schlüssel auf Werte abgebildet.
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

@BlackJack:

Gut wenn SPTranslation das Wörterbuch ist dann müsste doch __LS__(30120) der schlüssel für den Wert 1 sein oder nicht...
und ret wird der Wert __LS__(30120) zugeordnet oder auch nicht?
BlackJack

@sveni_lee: Wie wär's wenn Du einfach mal ein Grundlagentutorial durcharbeitest‽
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

Ja gut aber das hilft mir ja nicht wirklich weiter...

SPTranslations ist ein Dictionary...

Code: Alles auswählen

SPTranslations = {__LS__(30120) : 'international',  __LS__(30121) : 'german',  __LS__(30122) : 'classics',  __LS__(30123) : 'soap'}
__LS__(30120) ist der Schlüssel
und 'international' ist der Wert, den ich haben möchte
also: print SPTranslations[__LS__(30120)]
sollte international liefern...

soweit habe ich das verstanden...

Das Problem ist aber das der schlüssel ansich ja ein Wert aus einer Liste ist denn __LS__(30120) ist ja bestandteil der Liste

Code: Alles auswählen

cats = [__LS__(30120), __LS__(30121), __LS__(30122), __LS__(30123), __LS__(30116)]
der durch

Code: Alles auswählen

ret = dialog.select(__LS__(30011), cats)
der Wert des Schlüssel __LS__(30120) aus dem Dictionary SPTranslations (international) muß als wert and scrapeWLPage(...) übergeben werden,
weil er dort wieder als Schlüssel dient um den Wert aus dem Dictionary SPWatchtypes auszugeben

Code: Alles auswählen

SPWatchtypes = {'international': 1, 'german': 5, 'classics': 3, 'soap': 2}
Leider wird eine solche konstelation nicht in irgendwelchen Dokumentationen beschrieben... Oder habe ich einen Fehler in mein Ablauf?
BlackJack

@sveni_lee: Ich weiss nicht so recht was Du mit Konstellation meinst? In ”irgendwelchen” Dokumentationen werden üblicherweise die einzelnen Datentypen und die Operationen darauf erklärt. Daraus dann ein Programm zusammenzusetzen, welches Dein Problem löst, ist Deine Aufgabe als Programmierer. Was Du genau mit den Objekten anstellen möchtest kann ja kein Autor von irgendwelcher Dokumentation wissen. Du bekommst die Bausteine an die Hand und musst wissen wie Dein Problem aussieht, was Du hast, was Du willst, und dann musst Du einen Weg vom einen zum anderen mit Hilfe der Bausteine entwickeln.
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

Die Lösung war mit vielprobieren gar nicht so schwer...
ich musste ein neues dictionary anlegen das den __LS(...) die entsprechende category zuordnet...

Code: Alles auswählen

SPTranslations1 = {__LS__(30120): 'international', __LS__(30121): 'german', __LS__(30122): 'classics', __LS__(30123): 'soap'}
und der Aufruf:

Code: Alles auswählen

scrapeWLPage(SPTranslations1[cats[ret]])
Antworten