Q:

trying to round robin a set of devices against set of criteria

I have 2 lists, both of which aren't fixed in len.
list1 = ["John", "bruce", "William"]
list2 = ["lindt", "reese", "snickers", "chocolate", "Milkyway", "Cadbury", "Candy"]

I want to distribute the candy amongst the members in list1 so that end result would look something like 
John: "lindt","chocolate","candy"
Bruce: "reese","Mlikyway"
Will: "Snickers","Cadbury"

I tried using cycle and zip from itertools but all I am getting is a tuple with something like
list1 = ["John","bruce","William"]
list2 = ["lindt","reese","snickers","chocolate","Milkyway","Cadbury","Candy"]
for i in zip(list2,cycle(list1)):
    print(i)

Output
('lindt', 'John')
('reese', 'bruce')
('snickers', 'William')
('chocolate', 'John')
('Milkyway', 'bruce')
('Cadbury', 'William')
('Candy', 'John')

A:

Let's use a dictionary:
kids = {}

all members from list1 become a list in your dictionary:
for i in list1: kids[i] = []

then use zip and cycle to assign each kid their candy:
for i in zip(list2,cycle(list1)): kids[i[1]].append(i[0])
# kids[i[1]] represents the kids's name since it's at index 1 in the tuple
# i[0] represents the candy that is associated to the kid.

Result:
>>> for i in kids: print(i,':', kids[i])
john : ['lindt', 'chocolate', 'candy']
bruce : ['reese', 'milkyway']
william : ['snickers', 'cadbury']

