Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典中查找与值索引对应的所有值_Python_Json - Fatal编程技术网

Python 在字典中查找与值索引对应的所有值

Python 在字典中查找与值索引对应的所有值,python,json,Python,Json,我有一个从JSON文件导入的字典: "teachers": [ { "fname": "George", "lname": "Edward", "val": true }, { "fname": "Davi

我有一个从JSON文件导入的字典:

"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.