我有一个列表和一个词典列表,我想从列表中分配项目到词典中的两个键之一。字典中的两个键必须分配值,每个字典中不应出现多次,每个项目的分布应平衡。均匀地分配项目到词典键
我打算用水果:
fruits = ['apple', 'orange', 'banana', 'papaya', 'kiwi']
baskets = [{'basket': 'one', 'fruit1': '', 'fruit2': ''},
{'basket': 'two', 'fruit1': '', 'fruit2': ''},
{'basket': 'three', 'fruit1': '', 'fruit2': ''},
{'basket': 'four', 'fruit1': '', 'fruit2': ''}]
筐的数量不应该的问题。
这是我正在做的那一刻:
import itertools
def in_basket(frt, bskt):
if frt in bskt.values():
return True
else:
return False
g = itertools.cycle(fruits)
fruit = next(g)
for basket in baskets:
basket['fruit1'] = fruit
fruit = next(g)
for basket in baskets:
while True:
if not in_basket(fruit, basket):
basket['fruit2'] = fruit
break
else:
fruit = next(g)
这种方法的问题是,我得到成果分配的不平衡。可能会有更多的篮子。
有没有一种方法可以在每个篮子槽中实现水果的均匀分配?
编辑 - 输出是更新的“篮子”列表,其中所有水果插槽都已填充。
您提到的列表的所需结果(样本列表)是什么? –
是的,我知道我很懒惰,但你能举一个你的输出应该看起来如何的例子吗? –
输出只是更新的“篮子”字典列表。 – rafello