Mam plik .txt z następujących linii w nim:Jak zwrócić słownik | Python
23;Pablo;SanJose
45;Rose;Makati
mam ten program:
file = open("C:/Users/renato/Desktop/HTML Files/myfile2.txt")
def query(id):
for line in file:
table = {}
(table["ID"],table["name"],table["city"]) = line.split(";")
if id == int(table["ID"]):
file.close()
return table
else:
file.close()
return {}
id = int(input("Enter the ID of the user: "))
table2 = query(id)
print("ID: "+table2["ID"])
print("Name: "+table2["name"])
print("City: "+table2["city"])
Więc co się dzieje (według mnie) jest:
pliku zostanie otwarty Utworzono hasz nazwany table
, a każdy wiersz pliku podzielony jest na 3 klucze/wartości. Jeśli wprowadzony przez użytkownika id
pasuje do wartości klucza ID
, zamknij plik i zwróć cały skrót.
Następnie przypisuję wartości table2
do wartości mieszania table
i próbuję wydrukować w niej wartości.
Gdy uruchomię to uzyskać następujące:
Traceback (most recent call last):
File "C:/Users/renato/Desktop/HTML Files/Python/hash2.py", line 17, in <module>
print("ID: "+table2["ID"])
KeyError: 'ID'
Wydaje się, że to nie uznając kluczową ID
na table2
var. Próbowałem również zadeklarować table2
jako skrót, umieszczając table2 = {}
przed wykonaniem funkcji, ale nadal wyświetla komunikat o błędzie.
Jak przypisać wartości zwróconego skrótu do zmiennej, aby można było je wydrukować przy użyciu ich wartości keys
?
Dlaczego patrzysz tylko na pierwszą linię pliku? – user2357112
Nie rozumiem, co masz na myśli, używam pętli for, aby przejrzeć wszystkie wiersze pliku. – pgonzaleznetwork
Powrócisz w pierwszej iteracji bez względu na wszystko, zanim będziesz mógł spojrzeć na drugą linię. – user2357112