Seite 1 von 1

Verständnisfrage "Liste"

Verfasst: Montag 6. März 2017, 09:51
von GameChanger
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?

Re: Verständnisfrage "Liste"

Verfasst: Montag 6. März 2017, 09:56
von Sirius3
@GameChanger: zeige mal ein vollständiges Beispiel, mit Daten, die den Fehler zeigen.

Re: Verständnisfrage "Liste"

Verfasst: Montag 6. März 2017, 10:17
von GameChanger
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]

Re: Verständnisfrage "Liste"

Verfasst: Montag 6. März 2017, 10:30
von 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)``.