如何将用户输入与python中json文件中的多个目录进行比较

如何将用户输入与python中json文件中的多个目录进行比较,python,json,Python,Json,我有一个json文件“contacts.json”,其中包含: { "Lisa": { "birthday": "09-02-1990" }, "Marge": { "birthday": "05-01-2010" }, "Bart": { "birthday": "23-09-1935" }, "Homer": { "birthday": "22-11-1990" } } 现在我需要编写一个代码来提取用户输入的输入名称的生日。 我写了这段代码,但它不起作用

我有一个json文件“contacts.json”,其中包含:

{
"Lisa": {
    "birthday": "09-02-1990"
},
"Marge": {
    "birthday": "05-01-2010"
},
"Bart": {
    "birthday": "23-09-1935"
},
"Homer": {
    "birthday": "22-11-1990"
}
}
现在我需要编写一个代码来提取用户输入的输入名称的生日。 我写了这段代码,但它不起作用


import json

name = input('Enter name of the person you want to see his/her birthday ')

with open('contacts.json') as file:
    data = json.load(file)

for i in data[i]:
    if name == data[i]:
        print(data[i]['Birthday'])

    else:
        print('Person not found')

file.close()

这应该满足您的要求:

import json

name = input('Enter name of the person you want to see his/her birthday ')

with open('contacts.json') as file:
    data = json.load(file)

birthday = ''

for value in data:
    if name == value:
        birthday = data[value]['birthday']
        break
    else:
        birthday = 'Person not found'

print(birthday)

file.close()
此代码可能对您有所帮助

arr={“Lisa”:{“生日”:“09-02-1990”},“Marge”:{“生日”:“05-01-2010”},“Bart”:{“生日”:“23-09-1935”},“荷马”:{“生日”:“22-11-1990”}
name=“lisa”
bs=“未找到人员”
对于arr.items()中的k、v:
如果k.lower()中的name.lower():
bs=“{0}的生日:{1}”。格式(k,v.get('birth'))
打破
印刷(理学士)

注意:对于Python 2.x,使用arr.iteritems()而不是arr.items()

对于一个好问题,json代码也应该格式化,并且应该更精确地指定“它不工作导入json”(例如错误消息)。感谢您的帮助,但这并不能满足我的要求。例如,如果我输入“Lisa”,它应该显示Lisa的生日,如果我的输入名称不在jason文件中,那么它将显示person not Found,这正是它所做的。你试过运行上面的代码吗?在我的例子中,如果你在If语句中看到我们正在检查name==value,那么它总是显示“Person not found”,在每种情况下它都将为false,因为我们将名称“Lisa”作为输入。@SanaRasheed你能打印“data”变量并在这里发布输出吗?我尝试了你在问题中发布的json代码,它在这里工作。也许正如您所说,在读取json时会出现问题。谢谢我使用了.item()函数,现在我的代码可以正常工作了