Python 在字典中查找与值索引对应的所有值
我有一个从JSON文件导入的字典:Python 在字典中查找与值索引对应的所有值,python,json,Python,Json,我有一个从JSON文件导入的字典: "teachers": [ { "fname": "George", "lname": "Edward", "val": true }, { "fname": "Davi
"teachers": [
{
"fname": "George",
"lname": "Edward",
"val": true
},
{
"fname": "David",
"lname": "Smith",
"val": true
}]
假设用户输入“David”,如何返回“Smith”和true?在这里使用字典是正确的吗?如果您有JSON文件和您给我们的结构,Python将把它解析到字典列表中 您可以使用如下函数:
def find_name(教师,姓名):
对于教师中的教师:
如果教师['fname']==姓名:
归国教师
由于这一点,您将能够搜索该名称并收到包含该名称的dict
教师=[{'fname':'George','lname':'Edward','val':True},{'fname':'David','lname':'Smith','val':True}]
#然后你可以搜索任何名字
>>>查找您的姓名(教师“David”)
{'fname':'David','lname':'Smith','val':True}
#您还可以访问dict的其他键:
>>>george=查找名称(教师,“george”)
>>>乔治[名字]
“爱德华”
>>>乔治['val']
真的
编辑:
如果您想使用字典进行O(1)查找,可以修改数据,使教师姓名成为dict键
teachers = { # notice that teachers are now a dict
"David": {"lname": "Smith", "val": True},
"George": {"lname": "Edward", "val": Ture},
}
然后使用这个函数
def get_教师(教师,姓名):
返回教师。获取(名称)
但同样,在这种情况下,您需要不同的JSON结构。请参阅。注意,您需要将JSON解析到字典中,您可以使用标准库中的
JSON
模块。这个解决方案是线性搜索,有没有办法使它更高效?我编辑了我的帖子,如果您可以更改JSON结构,您甚至可以实现O(1)。否则,如果您的数据集非常大,请查看对分
模块。非常感谢您的帮助+1.