【问题标题】:Retrieve values from both nested dictionaries within a list从列表中的两个嵌套字典中检索值
【发布时间】:2020-07-13 00:28:01
【问题描述】:

我在 python 3.7 中使用了一个返回 json 数据的 api 调用。

result = (someapicall)

返回的数据似乎是列表中两个嵌套字典的形式,即

[{name:foo, firmware:boo}{name:foo, firmware:bar}]

我想从第一个字典中检索键“name”的值,以及从两个字典中检索键“firmware”的值,并以下列格式存储在新字典中。

{foo:(boo,bar)}

到目前为止,我已经成功地检索了第一个“名称”和第一个“固件”的值,并使用以下内容存储在字典中。

dict1={}
for i in  result:
 dict1[(i["networkId"])] = (i['firmware']) 

我试过了。

d7[(a["networkId"])] = (a['firmware'],(a['firmware']))

但正如预期的那样,上面似乎只是两次返回相同的固件。

任何人都可以帮助实现上述预期结果

【问题讨论】:

    标签: python json list dictionary nested


    【解决方案1】:

    您可以使用defaultdict 在列表中累积值,如下所示:

    from collections import defaultdict
    
    result = [{'name':'foo', 'firmware':'boo'},{'name':'foo', 'firmware':'bar'}]
    
    # create a dict with a default of empty list for non existing keys
    dict1=defaultdict(list)
    
    # iterate and add firmwares of same name to list
    for i in result:
      dict1[i['name']].append(i['firmware'])
    
    # reformat to regular dict with tuples
    final = {k:tuple(v) for k,v in dict1.items()}
    
    print(final)
    

    输出:

    {'foo': ('boo', 'bar')}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-01
      • 2020-07-24
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      相关资源
      最近更新 更多