使用“lambda”和“dictionary comprehension”对嵌套字典执行代数运算?

时间:2017-08-11 09:57:53

标签: python dictionary lambda compression list-comprehension

lambda的帮助下将两个“简单”词典相乘的问题,我决定如下:

v1={'product1': '100', 'product2': '120'}
v2={'product1': '3', 'product2': '2'}

foo = lambda dct_1, dct_2: {key: int(dct_2[key]) * int(dct_1[key]) for key in dct_2}

foo(v1, v2)
# Out: {'product1': 300, 'product2': 240}

如何以相同的方式将两个嵌套字典相乘?

V={'id1': [{'product1': '1', 'product2': '2'}],'id2': [{'product1': '3', 'product2': '4'}]}
Z={'id1': [{'благо1': '10', 'благо2': '25'}], 'id2': [{'product1': '20', 'product2': '15'}]}

答案应如下:

Out:={'id1': [{'product1': '10', 'product2': '50'}], 'id2': [{'product1': '60', 'product2': '60'}]} 

我正在使用Python3。

1 个答案:

答案 0 :(得分:0)

我会省略lambda,因为这种理解已经很长了,但基本上你可以使用:

{outerkey: [{innerkey: int(V[outerkey][0][innerkey])*int(Z[outerkey][0][innerkey]) 
             for innerkey in V[outerkey][0]}] 
 for outerkey in V}

给我:

{'id1': [{'product1': 10, 'product2': 50}],
 'id2': [{'product1': 60, 'product2': 60}]}

注意:我假设词典具有相同的键:

V={'id1': [{'product1': '1', 'product2': '2'}],'id2': [{'product1': '3', 'product2': '4'}]}
Z={'id1': [{'product1': '10', 'product2': '25'}], 'id2': [{'product1': '20', 'product2': '15'}]}