将新值附加到类似的键python字典

时间:2017-11-27 17:02:18

标签: python dictionary data-structures tree

我有一棵树,并且我使用地图方法遍历树(即具有相似键的节点必须聚集在一起)假设根节点标记为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'

附加相似的值会导致问题。任何人都可以在这里发现错误。我不擅长处理字典。

1 个答案:

答案 0 :(得分:1)

错误says self.dict[hd]是一个字符串。尝试使用self.dict[hd]+=root.data代替self.dict[hd].append(root.data)。当然只有root.data是另一个字符串。

如果您希望该键的值为列表,那么我建议先在该键上创建一个空列表,然后附加