辞書と辞書のリストがあり、そのリストの項目を辞書の2つのキーのいずれかに割り当てる必要があります。辞書の両方のキーには値が割り当てられていなければならず、項目は各辞書に複数回表示されず、各項目の分散が均衡する必要があります。辞書キーに項目を均等に割り当てる
私は果物を使用するつもりです:
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