如何返回字典| 蟒蛇

Com*_*wan 9 python python-3.x

我有一个.txt文件,其中包含以下行:

23;Pablo;SanJose
45;Rose;Makati
Run Code Online (Sandbox Code Playgroud)

我有这个程序:

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"])
Run Code Online (Sandbox Code Playgroud)

所以正在发生的事情(据我所知)是:

文件打开table创建一个调用的哈希,文件的每一行被分成3个键/值.如果id用户输入的内容与键的值匹配ID,则关闭文件并返回整个哈希值.

然后,我table2table哈希上分配值,我正在尝试打印它中的值.

当我运行它时,我得到以下内容:

   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'
Run Code Online (Sandbox Code Playgroud)

似乎它没有识别var ID上的关键字table2.我还尝试在执行函数之前table2通过put 声明为哈希table2 = {},但它会继续显示错误消息.

如何将返回的哈希值分配给变量,以便我可以使用它们打印它们keys

Gab*_*abe 11

发生的事情是你在文件的第一行与你正在寻找的id不匹配后立即返回.你必须这样做:

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
    # ID not found; close file and return empty dict
    file.close()
    return {}
Run Code Online (Sandbox Code Playgroud)