使用值在嵌套字典中获取对应于该值的键,该字典具有每个键的列表
Using value to get key correspondent to that value in a nested dictionary that has a list for each key
我有一个嵌套字典,它显示了每个 MLB 运动队的分区,分区是键,值是该分区中的球队。每个键大约有 5 个值。我需要做的是反向映射它,以便我能够 return 给定团队的划分。
Divisions_dict = {
'ALCentral' : ['Chicago White Sox' , 'Cleveland Indians' , 'Detroit Tigers' , 'Minnesota Twins' , 'Kansas City Royals'] ,
'ALEast' : ['New York Yankees' , 'Boston Red Sox', 'Tampa Bay Rays' , 'Toronto Blue Jays' , 'Baltimore Orioles'],
'Comeon' : 'hello'
}
def get_key(val):
for key, value in Divisions_dict.items():
if val == value:
return key
return "key doesn't exist"
print(get_key('hello'))
print(get_key('Toronto Blue Jays'))
我知道我做错了并且认为这与字典中的团队以列表形式的事实有关。 This is the code I have tried but to no avail。当我 运行 程序时,它打印第一行,但是当我要求它打印 "Toronto Blue Jays"
的密钥时,它 returns "key doesn't exist"
。任何帮助将不胜感激!
您可以通过迭代原始字典并使用 dict.fromkeys
更新来构建反向字典:
teams_dict = {}
for division, teams in Divisions_dict.items():
teams_dict.update(dict.fromkeys(teams, division))
或者你可以使用字典理解:
teams_dict = {team: division
for division, teams in Divisions_dict.items()
for team in teams}
你是对的,团队在列表中是什么搞砸了。
def get_key(val):
for key, value in Divisions_dict.items():
if val == value or val in value:
return key
return "key doesn't exist"
添加 or val in value
的细微修改将说明这一点。请记住,如果您要搜索的值是不在列表中的值的子字符串,那么 return 也会为真。例如,如果您正在寻找 'he'
,它会在 'hello'
中找到它。如果您真的想确保不会发生这种情况,您可以测试该值是否为字符串。
def get_key(val):
for key, value in Divisions_dict.items():
if isinstance(value, str):
if val == value:
return key
else:
if val in value:
return key
return "key doesn't exist"
顺便说一句,我建议 return 使用 None
而不是 "key doesn't exist"
。它是 None
的用途之一,现在您可以将 "key doesn't exist"
作为密钥!
我有一个嵌套字典,它显示了每个 MLB 运动队的分区,分区是键,值是该分区中的球队。每个键大约有 5 个值。我需要做的是反向映射它,以便我能够 return 给定团队的划分。
Divisions_dict = {
'ALCentral' : ['Chicago White Sox' , 'Cleveland Indians' , 'Detroit Tigers' , 'Minnesota Twins' , 'Kansas City Royals'] ,
'ALEast' : ['New York Yankees' , 'Boston Red Sox', 'Tampa Bay Rays' , 'Toronto Blue Jays' , 'Baltimore Orioles'],
'Comeon' : 'hello'
}
def get_key(val):
for key, value in Divisions_dict.items():
if val == value:
return key
return "key doesn't exist"
print(get_key('hello'))
print(get_key('Toronto Blue Jays'))
我知道我做错了并且认为这与字典中的团队以列表形式的事实有关。 This is the code I have tried but to no avail。当我 运行 程序时,它打印第一行,但是当我要求它打印 "Toronto Blue Jays"
的密钥时,它 returns "key doesn't exist"
。任何帮助将不胜感激!
您可以通过迭代原始字典并使用 dict.fromkeys
更新来构建反向字典:
teams_dict = {}
for division, teams in Divisions_dict.items():
teams_dict.update(dict.fromkeys(teams, division))
或者你可以使用字典理解:
teams_dict = {team: division
for division, teams in Divisions_dict.items()
for team in teams}
你是对的,团队在列表中是什么搞砸了。
def get_key(val):
for key, value in Divisions_dict.items():
if val == value or val in value:
return key
return "key doesn't exist"
添加 or val in value
的细微修改将说明这一点。请记住,如果您要搜索的值是不在列表中的值的子字符串,那么 return 也会为真。例如,如果您正在寻找 'he'
,它会在 'hello'
中找到它。如果您真的想确保不会发生这种情况,您可以测试该值是否为字符串。
def get_key(val):
for key, value in Divisions_dict.items():
if isinstance(value, str):
if val == value:
return key
else:
if val in value:
return key
return "key doesn't exist"
顺便说一句,我建议 return 使用 None
而不是 "key doesn't exist"
。它是 None
的用途之一,现在您可以将 "key doesn't exist"
作为密钥!