Skip to main content
 首页 » 编程设计

Python之字典中的递归循环

2025年05月04日15zhenyulu

有没有一种很酷的方法可以递归遍历dict以获得sum(values)的所有组合:

我有一个字典 {a: 10, b: 20, c:30}

我想找到所有二元组和三元组的唯一组合(值的总和):

例如两个

30  # 10 + 20 
40  # 10 + 30 
50  # 20 + 30 

对于三分球也是如此:

60 # 10 + 20 + 30 

请您参考如下方法:

对于您提供的示例输入,您可以使用 map、sum 和 itertools.combinations 的组合:

d = {'a': 10, 'b': 20, 'c':30} 
 
import itertools 
print map(sum, itertools.combinations(d.values(), 2)) 
print map(sum, itertools.combinations(d.values(), 3)) 

或者,在 Python3 中:

d = {'a': 10, 'b': 20, 'c':30} 
 
import itertools 
print(list(map(sum, itertools.combinations(d.values(), 2)))) 
print(list(map(sum, itertools.combinations(d.values(), 3)))) 

打印:

[40, 30, 50] 
[60]