code: def generate_sibling_distance(self):
          
          sibling_distance = defaultdict(lambda: defaultdict(dict))
          topics = {p.topic for p in self.partitions}
          for source in self.brokers:
              for dest in self.brokers:
                  if source != dest:
                      for topic in topics:
                          sibling_distance[dest][source][topic] = \
                              dest.count_partitions(topic) - \
                              source.count_partitions(topic)
          return sibling_distance
docs: Generate a dict containing the distance computed as difference in
          in number of partitions of each topic from under_loaded_brokers
          to over_loaded_brokers.
  
          Negative distance means that the destination broker has got less
          partitions of a certain topic than the source broker.
  
          returns: dict {dest: {source: {topic: distance}}}