Python 如何使用单个变量访问字典中的字典?
对python非常陌生,但对基本语法非常熟悉,因此如果描述中没有完全使用正确的术语,我深表歉意 如果我有一个嵌套字典叫做standings, 它包含一个名为Team的字典中的值, 它包含一个名为name的值,可通过以下方式访问该值:Python 如何使用单个变量访问字典中的字典?,python,dictionary,Python,Dictionary,对python非常陌生,但对基本语法非常熟悉,因此如果描述中没有完全使用正确的术语,我深表歉意 如果我有一个嵌套字典叫做standings, 它包含一个名为Team的字典中的值, 它包含一个名为name的值,可通过以下方式访问该值: for dicts in standings: print(dicts["team"]["name"]) teamName = ["team"]["name"] for di
for dicts in standings:
print(dicts["team"]["name"])
teamName = ["team"]["name"]
for dicts in standings:
print(dicts+teamName)
我如何将其表示为如下所示:
for dicts in standings:
print(dicts["team"]["name"])
teamName = ["team"]["name"]
for dicts in standings:
print(dicts+teamName)
因此,我们基本上想从:
dicts["team"]["name"]
到
给出相同的结果
字典片段:
{'rank': 1, 'team': {'id': 50, 'name': 'Manchester City'}}
我试过几种不同的方法,但是如果不出错,我就看不出来,我想知道这是否是不可能的?(尽管我确信这只是我的用户错误)
谢谢 您对数据结构的描述没有多大意义,但假设
dicts
是一个包含键team
的字典,其值包含键name
。可以使用键列表和递归执行动态嵌套查找-
def嵌套查找(d,键):
如果len(键)==0:
返回d
项目=d[键[0]]
剩余键=键[1:]
返回嵌套的\u查找(项、剩余\u键)
或者,如果您喜欢简洁,可以使用lambda函数-
nested_lookup=lambda d,ks:如果len(ks)>0,则嵌套_lookup(d[ks[0]],ks[1:])
你可以像这样使用它-
>>嵌套查找({'team':{'name':5},['team','name']))
5.
>>>嵌套的查找({'team':{'name':5},['team']))
{'name':5}
>>>嵌套查找({'team':{'name':{'more':[42,47]}}},['team','name','more']))
[42, 47]
与前面的答案类似,但没有使用递归和错误处理。如果缺少键None
将返回值
d = {'rank': 1, 'team': {'id': 50, 'name': 'Manchester City'}}
def get_nested(d, *keys):
result = d.copy()
for key in keys:
try:
result = result[key]
except KeyError:
return None
return result
print(get_nested(d, 'rank'))
print(get_nested(d, 'team', 'id'))
print(get_nested(d, 'team', 'name'))
print(get_nested(d, 'team', 'league'))
print(get_nested(d, 'non_existent', 'name'))
keys = 'team', 'name'
print(get_nested(d, *keys))
输出
1
50
Manchester City
None
None
Manchester City
请在问题中添加您的词典样本。@Matt它似乎可以很好地处理您的代码片段-
嵌套式查找({'rank':1,'team':{'id':50,'name':'Manchester City'},['team','name'])
给出了'Manchester City'