如何访问深度嵌套的字典和列表结构

3

在给定的情况下

d = {'d1':[1,2,{'d2':['this is tricky',{'tough':[1,2,['me']]}]}]}

这个问题要求我打印'me'

我尝试理解字典中给定的键和值,以找到基于键的任何关系,但未能成功。

在继续深入之前,是否应该了解某些特定的函数?


print(dct["d1"][2]["d2"][1]["tough"][2][0]) - Andrej Kesely
当你说“问题要求我打印'me'”时,如果这是一份作业或测验,请告诉我们问题的内容。因为我认为他们并不真正期望你编写递归下降扩展嵌套字典以找到所需字符串的代码。该问题是否仅仅询问您使用何种语法来查找字典?肯定不是更复杂的事情吧? - smci
此问题的原始版本使用 dict 作为变量名。这是一种不好的做法,因为它会遮蔽内置的 Python 函数 dict(这意味着您不能再使用 dict(...) 来创建新字典)。请参见例如 https://dev59.com/EnnZa4cB1Zd3GeqPwOxq。 - Karl Knechtel
2个回答

6

将其分解为步骤。您开始于:

d = {'d1':[1,2,{'d2':['this is tricky',{'tough':[1,2,['me']]}]}]}

me = 'me'
tough = [1, 2, [me]]
d2 = ['this is tricky', {'tough': tough}]
d1 = [1, 2, {'d2': d2}]
d = {'d1': d1}

tough 访问 me
print(tough[2][0])

要从d2访问我,需要坚强(tough)

print(d2[1]['tough'])

要从d1访问位于d2的我

print(d1[2]['d2'])

dict中访问我时,请使用d1

print(d['d1'])

将它们全部链接在一起。
d['d1'][2]['d2'][1]['tough'][2][0]

1
我们从以下内容开始:

d = {'d1':[1,2,{'d2':['this is tricky',{'tough':[1,2,['me']]}]}]}

让我们看看如何逐步浏览数据:

>>> d = {'d1':[1,2,{'d2':['this is tricky',{'tough':[1,2,['me']]}]}]}
>>> d['d1']
[1, 2, {'d2': ['this is tricky', {'tough': [1, 2, ['me']]}]}]
>>> d['d1'][2]
{'d2': ['this is tricky', {'tough': [1, 2, ['me']]}]}
>>> d['d1'][2]['d2']
['this is tricky', {'tough': [1, 2, ['me']]}]
>>> d['d1'][2]['d2'][1]
{'tough': [1, 2, ['me']]}
>>> d['d1'][2]['d2'][1]['tough']
[1, 2, ['me']]
>>> d['d1'][2]['d2'][1]['tough'][2]
['me']
>>> d['d1'][2]['d2'][1]['tough'][2][0]
'me'

在最后,我们得到了原始问题所需的代码:d['d1'][2]['d2'][1]['tough'][2][0]

1
请勿发布代码图片。请复制并粘贴文本。文本对于所有人都更易访问(无论是屏幕阅读器、Google机器人还是只想复制部分代码的人)。 - Sören

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接