In einem Dictionary < und > benutzen?
number[key] ist auch ein string. (also wenn man über numbers.values() iteriert, sonst ist es ein Dictionary)
@ulipy,
du hattest geschrieben, dass dies die Ausgabe von print(numbers) ist:
2 : {'Key1':'Datensatz1, 'Key2':'Datensatz2, 'Nummer':'2'}
Das kann nicht sein, da da Anführungszeichen nach Datensatz1 und Datensatz2 fehlen.
Und wenn die erste 2 wirklich ein int ist, dann funktioniert das:
@ulipy,
du hattest geschrieben, dass dies die Ausgabe von print(numbers) ist:
2 : {'Key1':'Datensatz1, 'Key2':'Datensatz2, 'Nummer':'2'}
Das kann nicht sein, da da Anführungszeichen nach Datensatz1 und Datensatz2 fehlen.
Und wenn die erste 2 wirklich ein int ist, dann funktioniert das:
Code: Alles auswählen
numbers = {2 : {'Key1':'Datensatz1', 'Key2':'Datensatz2', 'Nummer':'2'}}
for number in numbers:
if number > 1:
print(f"{number} ist größer als 1")
"""
Ausgabe:
2 ist größer als 1
"""
@rogerb: der Code, wie das Wörterbuch entsteht, steht ja da. Und der Inhalt kommt nunmal aus einem DictReader, und der liefert nur Strings als Werte.
@_corn_: Du mußt selbst das, was Du liest und eine Zahl repräsentiert, in eine Zahl umwandeln:
wobei sowohl der Name der Funktion `read_number`, als auch das Ergebnis `lookup_number` irreführend sind, denn es wird nicht nur eine Zahl geladen, und Du schlägst mit lookup_number auch keine Zahl nach, sondern ein Wörterbuch, was auch immer dessen Inhalt ist.
@_corn_: Du mußt selbst das, was Du liest und eine Zahl repräsentiert, in eine Zahl umwandeln:
Code: Alles auswählen
def read_number():
with open('Datei.csv', encoding='utf-8', newline='') as csv_input:
reader = csv.DictReader(csv_input, delimiter=';')
lookup_number = {}
for row in reader:
lookup_number[int(row['Nummer'])] = row
return lookup_number
Stimmt, das hätte ich selber sehen müssen:Und der Inhalt kommt nunmal aus einem DictReader, und der liefert nur Strings als Werte.
Der Komplette Code sollte dann so aussehen:
Code: Alles auswählen
import csv
def read_number():
with open('Datei.csv', encoding='utf-8', newline='') as csv_input:
reader = csv.DictReader(csv_input, delimiter=';')
lookup_number = {}
for row in reader:
lookup_number[int(row['Nummer'])] = row
return lookup_number
def main():
numbers = read_number()
print(numbers)
for number in numbers:
if number > 1:
print("Geht")
if __name__ == "__main__":
main()
- __blackjack__
- User
- Beiträge: 13116
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ich würde da noch eine „dict comprehension“ und `any()` einbauen:
Code: Alles auswählen
#!/usr/bin/env python3
import csv
def read_numbers():
with open("Datei.csv", encoding="utf-8", newline="") as file:
reader = csv.DictReader(file, delimiter=";")
return {int(row["Nummer"]): row for row in reader}
def main():
numbers = read_numbers()
print(numbers)
if any(number > 1 for number in numbers):
print("Geht")
if __name__ == "__main__":
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman