【问题标题】:Robot Framework: Merge and sum values of dictionaries with matching items in a list of dictionariesRobot Framework:将字典的值与字典列表中的匹配项合并和求和
【发布时间】:2021-08-07 08:17:19
【问题描述】:

抓取一个网络表格后,我将每一行的所有值存储为一个字典,然后将所有字典附加到一个列表中。这样做,我得到下面的字典(样本),它可以具有相同的键值对,例如:store123 & 789 存在于 2 个字典中:

${data} = [{store: 123, prov: 'ON' value: 10},{store: 456, prov: 'AB' value: 5},{store: 123, prov: 'ON' value: 4},{store: 789, prov: 'MB' value: 3},{store: 789, prov: 'MB' value: 7}]

我如何合并和汇总所有这些字典项的value,以便仅获得独特的元素,例如:

${data} = [{store: 123, prov: 'ON' value: 14},{store: 456, prov: 'AB' value: 5},{store: 789, prov: 'MB' value: 10}]

也可以使用 python 提供解决方案。

注意:我找到了一些 python 解决方案,但它们仅在每个字典存储为单独的变量时才有效 Merge and sum of two dictionaries

【问题讨论】:

标签: python python-3.x list dictionary robotframework


【解决方案1】:

您的意思是您不想存储在新字典中并像这样打印?

data = [{'store': 123, 'value': 10},{'store': 456, 'value': 5},{'store': 123, 'value': 
4},{'store': 789, 'value': 3},{'store': 789, 'value': 7}]

Dict = {}
for x in data:
        if x['store'] in Dict:
                Dict[x['store']] += x['value']
        else:
                Dict[x['store']] = x['value']
     
print([{'store':x,'value':y} for x,y in Dict.items()])

【讨论】:

  • 感谢@osamu-zenji 的回答。我稍微修改了data 值并添加了额外的键值对prov,我之前忘记提到了。我想将数据存储在新的字典列表中,而不是您提供的解决方案中。 注意:如果有匹配的store,只有value会改变,其他键值对保持不变。
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 2017-02-28
  • 2021-01-10
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 2021-06-24
  • 2019-02-24
相关资源
最近更新 更多