对象中的一个参数下具有多个值

时间:2018-11-27 15:55:09

标签: python python-3.x object

我的程序有点问题,这是代码

children_and_parents = {}

class Parent_Child:
   def __init__(self, parent, child):
      self.parent = parent
      self.child = child

def read_data(filename):
   with open(filename) as f:
      parent, child = line.rstrip("\n").split("->")
      children_and_parents[parent] = Parent_Child(parent, child)

问题出在文件中,我的父母有多个孩子,例如:

玛丽->帕特里夏

Mary-> Lisa

但是当我打电话给children_and_parents [“ Mary”]。child时,我只会得到Lisa,但我应该得到Patricia和Lisa,我也希望它们成为不同的“实体”,以便以后可以调用和使用它们

2 个答案:

答案 0 :(得分:1)

您可以有多个这样的孩子:

children_and_parents = {}

class Parent_Child:
    def __init__(self, parent, child):
        self.parent = parent
        self.child = [child]

def read_data(filename):
    with open(filename) as f:
        parent, child = line.rstrip("\n").split("->")
        if parent in children_and_parents:
            # append the child
            children_and_parents[parent].child.append(child)
        else: 
            children_and_parents[parent] = Parent_Child(parent, child)

这会将子级作为列表,并在创建前检查父级是否已存在

答案 1 :(得分:0)

猜您可以更改以下行

  children_and_parents[parent] = Parent_Child(parent, child)

类似

  children_and_parents.setdefault(parent, []).append(Parent_Child(parent, child))