Наличие нескольких значений под одним параметром в объектах - PullRequest
0 голосов
/ 27 ноября 2018

У меня небольшая проблема с моей программой, вот код

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)

проблема в файле, у меня есть родители, у которых более 1 ребенка, например:

Мэри-> Патриция

Мэри-> Лиза

, но когда я звоню children_and_parents ["Мэри"]. Child, я получаю только Лизу, но я также должен получить Патрицию и Лизуя хотел бы, чтобы они были разными "сущностями", чтобы я мог позвонить и использовать их позже

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

У вас может быть несколько дочерних элементов, таких как:

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)

Это делает дочерний элемент списком и проверяет, существует ли родительский элемент перед созданием

0 голосов
/ 27 ноября 2018

Думаю, вы можете изменить следующую строку

  children_and_parents[parent] = Parent_Child(parent, child)

на что-то вроде

  children_and_parents.setdefault(parent, []).append(Parent_Child(parent, child))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...