具有多重输出的dict理解



我想同时填充两个dict,如本例所示:

def square(num):
return(num*num,num+num)

square_dict={}
sum_dict={}
for i in range(1,11):
square_dict[i],sum_dict[i]=square(i)

print(square_dict)
print(sum_dict)

我想知道是否可以用dict理解来做这件事。类似于:

square_dict, sum_dict= [dict(zip(num, square(num)) for num in range(1, 11))]

(显然不起作用(

提前感谢!

您可以从square的输出中为range(1, 11)中的每个项压缩键值对,以便将两个结果序列映射到dict构造函数:

square_dict, sum_dict = map(dict, (zip(*([(i, v) for v in square(i)] for i in range(1, 11)))))

演示:https://replit.com/@blhsing/冒险不足数学

另一种方法是将square的输出压缩为两个平方和和序列,然后将range(1, 11)与每个序列压缩为键值对,用于dict构建:

square_dict, sum_dict = (dict(zip(range(1, 11), p)) for p in zip(*map(square, range(1, 11))))

演示:https://replit.com/@blhsing/KindSafeMethods

最新更新