簡體   English   中英

具有多個 output 的 dict 理解

[英]dict comprehension with multiple output

我想同時填充兩個字典,就像在這個例子中一樣:

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)

我想知道是否可以通過聽寫理解來做到這一點。 就像是:

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

(這顯然是行不通的)

提前致謝!

您可以 zip 從 output 為range(1, 11)中的每個項目的square的鍵值對,以便您可以 map 將兩個結果序列發送到 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/AdventurousDeficientMathematics

另一種做法是將zip output的square轉化為兩個序列的平方和相加,然后將zip range(1, 11)與每個序列轉化為key-value對構造:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM