我有一個列表和一個詞典列表,我想從列表中分配項目到詞典中的兩個鍵之一。字典中的兩個鍵必須分配值,每個字典中不應出現多次,每個項目的分佈應平衡。均勻地分配項目到詞典鍵
我打算用水果:
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