我想用Python创建一个递归方法来打印这个字典:
partners = {
'manager-1': {
'name': 'Manager 1',
'children': {
'manager-2': {
'name': 'Manager 2',
'children': {
'employee-1': {
'name': 'Employee 1',
'children': {
'employee-7': {
'name': 'Employee 7',
},
'employee-8': {
'name': 'Employee 8',
}
}
},
'employee-2': {
'name': 'Employee 2',
},
'employee-3': {
'name': 'Employee 3',
},
},
},
'manager-3': {
'name': 'Manager 3',
'children': {
'employee-4': {
'name': 'Employee 4',
},
'employee-5': {
'name': 'Employee 5',
},
'employee-6': {
'name': 'Employee 6',
},
},
},
'manager-4': {
'name': 'Manager 4',
},
'manager-5': {
'name': 'Manager 5',
}
}
}
}
给出如下:
^{pr2}$我做了这个方法:
def hierarch(partners):
for partner in partners:
if 'children' not in partner.keys():
print(partner['name'])
else:
hierarch(partner['children'])
我在运行代码时遇到了这个错误:
AttributeError: 'str' object has no attribute 'keys'
如何制作一个允许我打印此层次结构的脚本?我对字典不是很在行。我正在使用python3。有什么帮助吗?谢谢。在
你需要复制精确的顺序吗?您可以使用类似的方法遍历数据结构:
您得到了
AttributeError
,因为您递归地对每个'children'值调用hierarch
函数。这对'employee-1'这样的键有效,因为递归调用将在关联的dict上循环,但是在'name'上会失败,因为没有关联的dict,只有一个名称字符串。在因此,您需要测试每个项,以确定它是否有效地在其上递归。您可以使用} 函数。在
type
函数来实现这一点,但建议您使用更通用的^{我们不需要打印所需的名称,而是可以通过将函数转换为生成器使其更加灵活。这样我们就可以循环生成的结果,边打印边执行其他处理。或者我们可以很容易地把它们收集成一个列表,或者一个新的平面词典。在
输出
^{pr2}$相关问题 更多 >
编程相关推荐