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

Python 如何使用单个变量访问字典中的字典?

Python 如何使用单个变量访问字典中的字典?,python,dictionary,Python,Dictionary,对python非常陌生,但对基本语法非常熟悉,因此如果描述中没有完全使用正确的术语,我深表歉意 如果我有一个嵌套字典叫做standings, 它包含一个名为Team的字典中的值, 它包含一个名为name的值,可通过以下方式访问该值: for dicts in standings: print(dicts["team"]["name"]) teamName = ["team"]["name"] for di

对python非常陌生,但对基本语法非常熟悉,因此如果描述中没有完全使用正确的术语,我深表歉意

如果我有一个嵌套字典叫做standings, 它包含一个名为Team的字典中的值, 它包含一个名为name的值,可通过以下方式访问该值:

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'