Python 如何从列表中的值、json文件中找到密钥?
我的解决方案如下,但这是我的问题 我有一个json,它将学校的位置与其关联的Python 如何从列表中的值、json文件中找到密钥?,python,json,Python,Json,我的解决方案如下,但这是我的问题 我有一个json,它将学校的位置与其关联的学校代码配对。不同的学校代码可能适用于同一地点 data = [ { "location": "New York", "school-code": "CITYA", "school-code-2": "NYU", "school-code-3"
学校代码
配对。不同的学校代码可能适用于同一地点
data = [
{
"location": "New York",
"school-code": "CITYA",
"school-code-2": "NYU",
"school-code-3": "CityU"
},
{
"location": "New Jersey",
"school-code": "NJU",
"school-code-2": "BOU2",
"school-code-3": "NJUE"
},
{
"location": "California",
"school-code": "CAL",
"school-code-2": "Cal2"
},
{
"location": "Florida",
"school-code": "fNJU",
"school-code-2": "fNJU2",
"school-code-3": "fNJUE"
}
]
如果用户输入“CityU”,如何获取位置。它应该给出纽约的位置
code_input = "CityU"
print("Your school zone is",location)
output: Your school zone is New York
仅当学校代码
与用户输入之间存在精确匹配时,它才适用于以下代码:
code_input = 'CityU'
school_code = code_input
for i in data:
if i['school-code-3'] == school_code:
print(i['location'])
break
我想知道,无论用户输入什么学校代码,它都会给出该条目的位置。这可以使用
next
和简单的生成器理解来完成:
next(d['location'] for d in schools if code_input in d['school-code'])
如果没有匹配项,这将引发错误。如果不需要,则可以提供默认返回值:
next((d['location'] for d in schools if code_input in d['school-code']), None)
试试这个-
code_input = 'CityU'
l = [i['location'] for i in schools if code_input in i['school-code']][0]
print("Your school zone is",l)
笨重,但这就是我最后做的,不确定这能坚持多久
given_school_code = input("What is your school code? ")
# save the answer to a variable
print(" you entered school code: ", given_school_code)
data = [
{
"location": "New York",
"school-code": "CITY",
"school-code-2": "NYU",
"school-code-3": "CityU"
},
{
"location": "New Jersey",
"school-code": "NJU",
"school-code-2": "NJU2",
"school-code-3": "NJUE"
},
{
"location": "California",
"school-code": "CAL",
"school-code-2": "Cal2"
},
{
"location": "Florida",
"school-code": "fNJU",
"school-code-2": "fNJU2",
"school-code-3": "fNJUE"
}
]
school_code = given_school_code
for i in data:
try:
if (school_code == i['school-code']) or (school_code == i['school-code-2']) or (school_code == i['school-code-3']) or (school_code == i['school-code-4']):
# print(i['location'])
new_loc = (i['location'])
print("Your School Zone is", new_loc)
break
else:
print("ah")
except:
pass
如果我能摆脱所有那些
或语句,那就太好了。请从下面重复[关于主题]()和[如何提问]()。许多教程和其他参考资料介绍了如何遍历列表、访问dict条目以及将该值与另一个值进行比较。我们希望您使用这些资源,尝试代码。。。如果你被卡住了,就把问题代码贴出来。“如何实现此功能”通常是离题的。添加了更多信息以供澄清。是的,您澄清了您尚未查找如何迭代dict。您声明不知道如何将列表转换为元组——这是另一个微不足道的查找。我们不知道是什么阻止你实现你想要的结果。你似乎在寻找一种制作反向词典的方法。。。您可以使用的另一个搜索词。提示您可能会遇到问题:要创建反向词典,当列表中有多个代码时,您可能需要创建多个条目。这意味着您需要遍历该列表。还要注意,您的dict不是唯一可逆的:GOA
映射到CA和NJ。有趣。。我不知道next()可以这样使用。。非常感谢。
given_school_code = input("What is your school code? ")
# save the answer to a variable
print(" you entered school code: ", given_school_code)
data = [
{
"location": "New York",
"school-code": "CITY",
"school-code-2": "NYU",
"school-code-3": "CityU"
},
{
"location": "New Jersey",
"school-code": "NJU",
"school-code-2": "NJU2",
"school-code-3": "NJUE"
},
{
"location": "California",
"school-code": "CAL",
"school-code-2": "Cal2"
},
{
"location": "Florida",
"school-code": "fNJU",
"school-code-2": "fNJU2",
"school-code-3": "fNJUE"
}
]
school_code = given_school_code
for i in data:
try:
if (school_code == i['school-code']) or (school_code == i['school-code-2']) or (school_code == i['school-code-3']) or (school_code == i['school-code-4']):
# print(i['location'])
new_loc = (i['location'])
print("Your School Zone is", new_loc)
break
else:
print("ah")
except:
pass