我有一本字典D
和一个列表D_best
。
我想找出我的列表中哪些组合给出了字典值的最大平均值。你知道吗
D = {'Discount': {'D1': 15, 'D2': 26, 'D3': 19, 'D4': 14, 'D5': 20, 'D6': 42}}
D_best = [['D1', 'D6'], ['D3', 'D1']]
组合1=57 D1 + D6
组合2=34 D1 + D3
max(Combination1, Combination2)
retrun最佳组合是[D1, D6]
约束:
len(D_best)
D_best
内每个元素的长度将保持不变。例如len(D_best[0])
将与len(D_best[1])
相同我一直在这样尝试:
D = {'Discount': {'D1': 15, 'D2': 26, 'D3': 19, 'D4': 14, 'D5': 20, 'D6': 42}}
D_best = [['D1', 'D6'], ['D3', 'D1']]
Dlist3 = []
for i in D_best:
for j in i:
Dlist3.append(j)
Dlist3 = set(Dlist3)
disc_dict = {}
for i in Dlist3:
disc_dict[i] = D['Discount'][i]
print(disc_dict)
c ={}
for n,i in enumerate(D_best):
ck = ("c{}".format(n))
c[ck] = i
print(c)
{'D3': 19, 'D1': 15, 'D6': 42}
{'c1': ['D3', 'D1'], 'c0': ['D1', 'D6']}
`
使用
itertools
的combination
函数,我们首先找出什么是最佳值然后,获取项目的指标:
注意: 我不知道是否只有对夫妇或是三元组和更大的元组也是可能的,你可以迭代
k
来支持所有可能的大小。你知道吗为每个组合创建一个列表(组合,求和),在D\U best中:
然后取最大值取最好的:
或者,要仅获取组合而不获取总和,请使用第一个元素:
另一方面:在你的问题中,你要求“最大平均来自字典值”,但在你的例子中,你只是计算总和。只有当组合长度相等(两个值的所有组合)时,这才是相同的。你知道吗
相关问题 更多 >
编程相关推荐