Python: Variable mit einem Wert aus einer List vergleichen?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
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

floferksy 
Beitragsersteller
 12.07.2018, 09:42

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?

1
Gaterde  12.07.2018, 09:45
@floferksy

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.

1
Destranix  12.07.2018, 09:47
@floferksy

Evtl. als Dictonaty speichern...

Würde ich zumindest so machen...

2
Gaterde  12.07.2018, 09:50
@Destranix

Kommt auf den Anwendungszweck drauf an. Aber ja, Dictionarys sind immer eine gute Wahl ^^.

1
Destranix  12.07.2018, 09:51
@Gaterde

Obwohl ich mich wundere, warum das in Python Dictonary und nicht Map heißt, wie in den meisten anderen Programmiersprachen...

2
KarlRanseierIII  12.07.2018, 23:22
@Destranix

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!

0
Destranix  13.07.2018, 09:25
@KarlRanseierIII

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...)

0

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...)

Woher ich das weiß:Recherche

floferksy 
Beitragsersteller
 12.07.2018, 10:00

Dafür müsste ich nur noch wissen wie man ne csv zu ner Map / dictonarie macht

0
Destranix  12.07.2018, 10:01
@floferksy

Das dürfte leicht gehen...

Habe sofort das hier gefunden...

Hoffentlich klappt es...

0
floferksy 
Beitragsersteller
 12.07.2018, 11:24
@Destranix

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}
0

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.

Woher ich das weiß:eigene Erfahrung

Keine Ahnung wie die Variable gesetzt wird, woher du die Liste hast.

Mit diesem Vorwissen würde ich die Variable eifach um " , 2" erweitern


floferksy 
Beitragsersteller
 16.07.2018, 10:13

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

0