簡體   English   中英

如何獲得兩個詞典的所有組合以在 Python 中創建一個新詞典

[英]How to get a all combinations of two dictionnaries to make a new one in Python

我想獲得兩個詞典的所有組合以獲得一個新的:

d1={'a':1.2,'b':1.5,'c':1.3}
d1={'a':2,'b':1,'c':2}

進入:

d={('a','a'):2.4,('a','b'):1.2,('a','c'):2.4,...}

其中新鍵將是首字母字典的組合,例如:( ('a','a')新值將是先前值的乘積,例如: 1.2 * 2 = 2.4

假設您想要值的乘積,您可以使用:

d1={'a':1.2,'b':1.5,'c':1.3}
d2={'a':2,'b':1,'c':2}

from itertools import product

out = {k: d1[k[0]]*d2[k[1]] for k in product(d1, d2)}
# or
out = {(k1, k2): d1[k1]*d2[k2] for k1, k2 in product(d1, d2)}

任意數量詞典的通用答案:

from itertools import product
from math import prod

dicts = [d1, d2]

out = {k: prod(d[key] for key,d in zip(k,dicts))
       for k in product(*dicts)}

Output:

{('a', 'a'): 2.4,
 ('a', 'b'): 1.2,
 ('a', 'c'): 2.4,
 ('b', 'a'): 3.0,
 ('b', 'b'): 1.5,
 ('b', 'c'): 3.0,
 ('c', 'a'): 2.6,
 ('c', 'b'): 1.3,
 ('c', 'c'): 2.6}

暫無
暫無

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

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