从嵌套循环中分离结果



我创建了一个嵌套循环。

import math 
results = []
for i in range(3,5):
    for j in range(1,5):
        something = (i, ((math.factorial(j-1 + i-1)/ (math.factorial(i-1) * math.factorial(j-1)))))
    print something,

输出如下:(3,1)(3,3)(3,6)(3,10)(4,1)(4,4)(4,10)(4,20)我怎么能把(3,x)和(4,y)这两组分开,然后用文字把它们打印在两行上呢?所以结果看起来像这样:

3:(1、3、6、10)

4:(1、4、10、20)

如果您想存储每个i的结果,那么您可以使用collections.defaultdict,示例-

import math
from collections import defaultdict
results = defaultdict(list)
for i in range(3,5):
    for j in range(1,5):
        results[i].append((math.factorial(j-1 + i-1)/ (math.factorial(i-1) * math.factorial(j-1))))
    print '{} : {}'.format(i,results[i])

,

3 : [1.0, 3.0, 6.0, 10.0]
4 : [1.0, 4.0, 10.0, 20.0]

您可以使用dict.setdefault():

将其附加到字典值中。
import math 
results = {}
for i in range(3,5):
    for j in range(1,5):
        something = (i, ((math.factorial(j-1 + i-1)/ (math.factorial(i-1) * math.factorial(j-1)))))
        results.setdefault(something[0], []).append(something[1])  #Create key if not available with default [] value if available get the value and append to the list 
print results
{3: [1, 3, 6, 10], 4: [1, 4, 10, 20]}

最新更新