Verständnisfrage "Liste"

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
GameChanger
User
Beiträge: 14
Registriert: Dienstag 21. Februar 2017, 15:14

Ich hätte eine allgm Frage zum Thema Listen
Ich möchte meine Ausgabe in einer "Liste" abspeichern.
Meine Wunschvorstellung wäre es, eine Art Matrix zu generieren.

x1=name_dfc[1], y1=name_FId[1]
x2=name:dfc[2], y2=name_FId[2]
...

Hier mein Versuch:

[codebox=python file=Unbenannt.txt]s = (name_dfc, name_FId)
FIds_list.append(s)[/code]

Die Liste hat dann die Form:

[codebox=python file=Unbenannt.txt]
FIds_list = [('name_dfc', 'name_FId'),(...),...][/code]

...nur möchte ich im Anschluss nach einem Element suchen:

[codebox=python file=Unbenannt.txt]gesuchtes_item = "FId_name[x]"
if gesuchtes_item in FIds_list:
print("True")[/code]

passiert NICHTS, wobei das Element definitv in der Liste ist-

Liegt das daran, dass meine Liste nicht das leistet, was ich von ihr möchte?
Zuletzt geändert von Anonymous am Montag 6. März 2017, 09:57, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@GameChanger: zeige mal ein vollständiges Beispiel, mit Daten, die den Fehler zeigen.
GameChanger
User
Beiträge: 14
Registriert: Dienstag 21. Februar 2017, 15:14

Sirius3 hat geschrieben:@GameChanger: zeige mal ein vollständiges Beispiel, mit Daten, die den Fehler zeigen.
hier mein ganzer Code:
[codebox=python file=Unbenannt.txt]import xml.etree.ElementTree as ET


tree = ET.parse("C:\\Users\...\dsm_export.xml")
root = tree.getroot()
dfcs = root.iter("DSM-DFC")

FIds_list = []

for dfcs_name_inhs in dfcs:
name_dfc = dfcs_name_inhs.findtext("SHORT-NAME")
FIds_dfc = dfcs_name_inhs.iter("DSM-DFC-INHS")
for names in FIds_dfc:
FId_dfc = names.findall("DSM-DFC-INH")
for element in FId_dfc:
comp = {"FId_Unused"}
if element.text not in comp:
s = (name_dfc, element.text)
FIds_list.append(s)

i = [1,2,3,4]
for x in i:
print(FIds_list[x])

t = "FId_...ffLrn"
if t in FIds_list:
print("Drinnen")
else:
print("nichts gefunden")[/code]


hier der Output:

[codebox=python file=Unbenannt.txt]('DFC_ACC...Des', 'FId_AC...Err')
('DFC_Air...sNeg1', 'FId_...ffLrn')
('DFC_Air...sNeg2', 'FId_...ffLrn')
('DFC_Air...sPos1', 'FId_...ffLrn')
nichts gefunden[/code]
Zuletzt geändert von Anonymous am Montag 6. März 2017, 10:31, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@GameChanger: ``a in xs `` prüft in Deinem Fall ob der Wert von `a` als Element in Liste `xs` vorkommt. Und das tut es nicht. Du suchst nach einer Zeichenkette, die Elemente in der Liste sind aber Tupel. Eine Zeichenkette ist niemals gleich einem Tupel, egal was in der Zeichenkette an Text steht oder was in dem Tupel enthalten ist.

Du willst nicht wissen ob `a` in `xs` vorkommt, sondern ob `a` in irgendeinem der Elemente von `xs` als zweites Element vorkommt. Das muss man dann schon sagen. Programmiersprachen machen nie das was man meint, sondern immer nur das was man sagt. :-) Also beispielsweise ``any(a == x[1] for x in xs)``.
Antworten