我想同时填充两个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