[英]How to find all possible combinations of dictionary values that add up to a certain number in Python while still retaining the key names
我有一本字典,其中的字段具有预先分配的分数。 例如,FirstNM 的得分为 300。这是一个示例字典:
my_dictionary = dict()
my_dictionary['FirstNM'] = 300
my_dictionary['LastNM'] = 500
my_dictionary['MiddlNM'] = 700
print(my_dictionary)
{'FirstNM': 300, 'LastNM': 500, 'MiddleNM': 700}
我需要找到总和超过 900 的字典值的所有可能组合。
我使用此代码查找所有可能的组合:
values = my_dictionary.values()
keys = my_dictionary.keys()
result = [seq for i in range(len(values), 0, -1) for seq in itertools.combinations(values, i) if sum(seq) >= 900]
print(result)
[(300, 500, 700), (300, 700), (500, 700)]
然后如何将键重新分配给值? 我已经查看了所有内容,无法确定如何执行此操作......最终,我想要组中的键而不是值。 任何帮助深表感谢。
期望的结果:
[('FirstNM', 'LastNM', 'MiddlNM'), ('FirstNM', 'LastNM'), ('LastNM', 'MiddlNM')]
将键而不是值和 map 组合到它们的值以进行总和测试:
result = [seq for i in range(len(values), 0, -1)
for seq in itertools.combinations(keys, i)
if sum(map(my_dictionary.get,seq)) >= 900]
print(result)
[('FirstNM', 'LastNM', 'MiddlNM'), ('FirstNM', 'MiddlNM'), ('LastNM', 'MiddlNM')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.