在python中通过一个值查找键
我需要通过其中一个值找到键。但是,根据我的搜索代码,它会得到“[]”。Python json文件和代码如下在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
<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.,我相信这是一种对字典进行反向查找不会损害其需求的情况,因为键不能是列表。