Python嵌套字典与列表混合结构的取值问题求助
Python嵌套字典与列表混合结构的取值问题求助
我最近在学Python 3.x,大部分内容都挺容易理解的,直到碰到了这种字典和列表嵌套的复杂结构,实在搞不懂它的取值逻辑,希望有人能用大白话给我解释下为什么有的写法可行有的不行。
当然啦,如果有更简洁的写法来实现我想要的功能,我也非常乐意学习!
我的需求很简单:从下面三个字典里提取并打印出this_entry这个值。
dict1 = {'simple':'this_entry'} dict2 = {'key1':{'key2':'this_entry'}} dict3 = {'key1':[{'nest_key':['this is harder',['this_entry']]}]}
前两个字典的取值完全没问题:
print(dict1['simple']) print(dict2['key1']['key2'])
但第三个字典就很棘手了!我一开始试了这种写法:
print(dict3['key1']['nest_key'][1])
直接报错了,错误信息是:
TypeError: list indices must be integers or slices, not str
为了搞懂哪里出问题,我一步步调试:
- 先打印
dict3['key1'],输出是[{'nest_key': ['this is harder', ['this_entry']]}] - 但接着用
dict3['key1']['nest_key'][1]就直接崩了,就是上面那个错误。
我想知道为什么这里会报错?后来我加了个[0]进去,写法变成这样:
print(dict3['key1'][0]['nest_key'][1])
虽然能运行了,但输出的是['this_entry'],不是我想要的this_entry。
我猜搞懂为什么必须加第一个[0],就能明白怎么正确提取到我要的值了?求大佬帮忙解答,谢谢啦!
备注:内容来源于stack exchange,提问作者Dan Lewis
相关产品推荐
相关产品推荐

