【发布时间】:2021-05-26 02:48:52
【问题描述】:
下午好。
我希望有人可以帮助我解决我试图定义的这个功能,我查看了已经提出的类似问题,但不幸的是我仍然不清楚。
我的目标是递归遍历嵌套字典并记录到达每个最终键所需的键路径。
如果我有这个 dic,例如:
example_dic = {
"fruitType": 'apple',
"orderNumber": 12345,
"links": {
"self": {
"href": 'https://foo'
}
},
"customerName": 'bob'
}
所需的输出(现在我只是打印)将类似于
fruitType
orderNumber
links self href
customerName
这是我迄今为止所取得的成就:
def get_key_path(to_find_keys, key_path):
for key in to_find_keys.keys():
print key
key_path.append(key) # Append to list
try:
get_key_path(to_find_keys[key], key_path) # About to call function recursively
except AttributeError:
print key_path # Found last key, print it.
key_path = [] # Reset list
现在它确实成功地找到了 dic 中的每个最后一个键,但我在重置列表时遇到了麻烦。如果我的 dic 有很多条目和嵌套,列表会在错误的时刻重置。
我仍在学习很多关于 Python(和一般编程)的知识,所以也许我缺少关于递归的基本元素。
非常感谢任何可以提供帮助的人!
【问题讨论】:
-
“我还在学习很多关于 Python(和一般编程)的知识”——这让你选择使用 Python 2 很奇怪。除了维护遗留代码之外,在 2021 年使用 Python 2 的理由很少。如果您仍在学习 Python,为什么不学习仍在积极维护的类型?
-
@JohnColeman,谢谢!我很欣赏这个建议,确实我同意 Python 2 现在并不理想,但我必须处理它,因为我的工作仍然有很多与之相关的东西尚未过渡。但是,实际上我将重点关注 3。
标签: python python-2.7 dictionary recursion