Python: Variable mit einem Wert aus einer List vergleichen?
Hallo, ich muss irgendwie eine Variable wie z.B. "3-0-7-4-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0" mit einem Wert aus einer List vergleichen / überprüfen ob diese Variable in der List ist.
Ich weiß das es mit:
if variable in list
Funktionieren würde, aber der Wert der Variable ist nicht genau der selbe wie der in der Liste:
Wert der Variable:
"3-0-7-4-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"
Wert des Listeneintrags:
"3-0-7-4-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 , 2"
Wie muss ich das schreiben wenn es so trotzdem den Wert in der List finden soll?
Ich habe die Werte auch in einer .csv Datei:
Kann ich sie damit irgendwie vergleichen lassen?
Die Werte in der .csv Datei sind nur beispiele, es werden später unterschiedliche Werte sein.
4 Antworten
if any("3-0-7-4-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0" in s for s in list):
#DeinCode
Dann versuche es so:
resultat = [s for s in list if "3-0-7-4-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0" in s]
Dann sollten alle Items, die den String beinhalten, in "resultat" abgespeichert werden. Dies kannst du dann ausgeben oder weiter verwenden.
Kommt auf den Anwendungszweck drauf an. Aber ja, Dictionarys sind immer eine gute Wahl ^^.
Weil halt, es ist naheliegend, ein Wörterbuch hat eine Schlüsselwortliste und zu jedem Schlüsselwort Informationen, warum heißt es nicht KV-Store?
map (hash map) ist ja nur eine konkrete Implementierung zur Lösung des Wörterbuchproblems. AHA!
Naj...
Python ist halt komisch...
Ich versteh noch nicht einmal, wie man seinen Text ordentlich aussehen lassen kann, wenn einrückungen gleich den Beginn einer Schleife oder ähnliches bedeuten...
Was wenn ich einfach so Text einrücken will...(Vielleicht gibt es da auch Möglichkeiten...Kenne mich mit Python aber nicht wirklich aus...)
Vermutlich solltest du den Inhalt der .csv-Datei als Map(in Python dictonarie) speichern, denn ich vermute, es soll sich um eine Zuweisung der id(Der lange Teil) zu einer anderen id(die Zahlen) handeln...
Wenn du die erste id als Key nimmst kannst du das dann auch mit
if key in dict
testen...
(Aufgrund von derzeitigen Störungen von Gf kam meine Antwort später...)
Dafür müsste ich nur noch wissen wie man ne csv zu ner Map / dictonarie macht
Habs jetzt glaub ich...
aber wie nehm ich das denn als key?
with open('memory.csv', mode='r') as infile:
reader = csv.reader(infile)
with open('coors_new.csv', mode='w') as outfile:
writer = csv.writer(outfile)
tagDict = {rows[0]:rows[1] for rows in reader}
Was spricht denn dagegen die csv zu parsen und nur das benötigte Feld zu nehmen?
Oder aber wie andere schrieben ein Dictionary zu nehmen, wenn es für den Zweck taugt.
Sonst kannst Du natürlich durch die Liste iterieren und jeweils vergleichen.
Oder Du baust Deine Liste als Liste von Tupeln und suchst dann passend mit nem Lambda oder einer Comprehension, oder, oder oder.
In Python führen oft richtig viele Wege nach Rom.
Keine Ahnung wie die Variable gesetzt wird, woher du die Liste hast.
Mit diesem Vorwissen würde ich die Variable eifach um " , 2" erweitern
Die Variable ist ein RFID Tag der über eine Serielle Schnittstelle eingelesen wird.
Die Liste besteht aus mehreren Tags denen aufsteigend eine Zahl zugewiesen wird.
Einfach eine 2 dranhängen bringt ja nicht viel, das muss für alle Tags funktioniern
Danke, aber wenn ich jetzt nach der if-Anweisung den Teil hinteren Teil vom Listeneintrag ausgeben möchte?
also wie im Beispiel einfach die "2"?
Oder einfach nur die ganze Zeile?