我有一棵树,并且我使用地图方法遍历树(即具有相似键的节点必须聚集在一起)假设根节点标记为0,根的左侧为-1,根的右侧为+ 1。遍历整个树并将每个节点的HD(从根的水平距离)分配为节点的密钥和节点的数据作为值。现在我想在字典中的一个地方附加具有相似键的所有值,例如 {0:[' 10',' 13'],1:['对于下面创建的树,12'],-2:[' 12'], - 1:[' 11']} 。
代码
class node:
dict1={}
def __init__(self,data):
self.data=data
self.left=None
self.right=None
def check_if_exists(self,hd,root):
if not self.dict1:
self.dict1[hd] = [root.data]
else:
if hd in self.dict1.keys(): ###Checking if key already exists for some node
self.dict1[hd].append(root.data)
else:
self.dict1[hd] = [root.data]
def vertical_order_tree(self,root,hd):
if root:
self.check_if_exists(hd,root)
self.vertical_order_tree(root.left,hd-1)
self.vertical_order_tree(root.right,hd+1)
root=node("10")
root.left=node("11")
root.left.left=node("12")
root.right=node("12")
#root.right.left=node("13")
root.vertical_order_tree(root,0)
print(root.dict1)
输出:
self.dict1[hd].append(root.data)
AttributeError: 'str' object has no attribute 'append'
附加相似的值会导致问题。任何人都可以在这里发现错误。我不擅长处理字典。
答案 0 :(得分:1)
错误says self.dict[hd]
是一个字符串。尝试使用self.dict[hd]+=root.data
代替self.dict[hd].append(root.data)
。当然只有root.data
是另一个字符串。
如果您希望该键的值为列表,那么我建议先在该键上创建一个空列表,然后附加