code: def round_robin(members, items):
      
      allocation = collections.defaultdict(set)
  
      for member, item in zip(itertools.cycle(members), items):
          allocation[member].add(item)
  
      return allocation
docs: Default allocator with a round robin approach.
  
      In this algorithm, each member of the group is cycled over and given an
      item until there are no items left.  This assumes roughly equal capacity
      for each member and aims for even distribution of item counts.