【问题标题】:Perform algebraic operations with nested dictionaries using "lambda" and "dictionary comprehension"?使用“lambda”和“字典理解”对嵌套字典执行代数运算?
【发布时间】:2017-08-11 09:57:53
【问题描述】:

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。

【问题讨论】:

  • 为什么 V、Z 中有列表?它们不是这样嵌套的字典
  • 这是合乎逻辑的......也许不是完全嵌套。

标签: python dictionary lambda compression list-comprehension


【解决方案1】:

我将省略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'}]}

【讨论】:

  • 是的,键是一样的。感谢您的帮助!
  • @Yaroslav 我很高兴它成功了。请不要忘记accept最有帮助的答案
猜你喜欢
  • 2021-07-24
  • 2017-11-27
  • 1970-01-01
  • 2013-07-28
  • 2011-06-06
  • 2016-06-09
  • 2021-05-02
  • 2013-11-30
相关资源
最近更新 更多