Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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_Dictionary - Fatal编程技术网

在python中通过一个值查找键

在python中通过一个值查找键,python,json,dictionary,Python,Json,Dictionary,我需要通过其中一个值找到键。但是,根据我的搜索代码,它会得到“[]”。Python json文件和代码如下 <type 'dict'> {'university of washington': ['university of washington', 'u dub'], 'brown university': ['brown university', 'brown'], 'university of bath': ['university of bath'], 'deakin un

我需要通过其中一个值找到键。但是,根据我的搜索代码,它会得到“[]”。Python json文件和代码如下

<type 'dict'>

{'university of washington': ['university of washington', 'u dub'], 'brown university': ['brown university', 'brown'], 'university of bath': ['university of bath'], 'deakin university': ['deakin university', 'deakin']}

import json
from ast import literal_eval
from collections import MutableMapping

def get_university_fullnames_dict(one_univ):
        with open('/data.json', 'r') as JSON:
            dic = json.load(JSON)
            my_dict = literal_eval(dic)
            #print type(my_dict)
            #print my_dict
        keys_have_value = [k for k,v in my_dict.items() if v == one_univ]
        return keys_have_value

# result is none, not "deakin university"
get_university_fullnames_dict('deakin')

{'university of washington':['university of washington','u dub'],'brown university':['brown university','brown'],'university of bath':['university of bath'],'deakin university':['deakin university','deakin']}
导入json
从ast导入文字值
从集合导入可变映射
获得大学全名(一所大学):
将open('/data.json',r')作为json:
dic=json.load(json)
my_dict=文字评估(dic)
#打印类型(我的字典)
#打印我的字典
键的值为[k代表k,如果v=1,则在我的目录项()中为v]
返回键有值
#结果是没有,不是“迪肯大学”
获取大学的全名和名言(“迪肯”)

预期结果应该是“迪肯大学”。

您需要的是会员资格检查,而不是平等:

[k for k, v in d.items() if 'deakin' in v]
您的功能变为:

def get_university_fullnames_dict(one_univ):
    # .... other codes come here
    return [k for k, v in my_dict.items() if one_univ in v]

谢谢,应该是[k代表k,v代表d.items(),如果v代表一个单位]。如果必须从值到键进行字典查找,则应该修改/转换数据结构。字典是为键到值的查找而设计的。@KlausD.,我相信这是一种对字典进行反向查找不会损害其需求的情况,因为键不能是列表。