Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python列表中集成字典_Python_Json_Python 3.x_List_Dictionary - Fatal编程技术网

在python列表中集成字典

在python列表中集成字典,python,json,python-3.x,list,dictionary,Python,Json,Python 3.x,List,Dictionary,我的字典清单如下: [ { "name":"reach", "values":[ { "value":0, "end_time":"2020-09-11T07:00:00+0000" }, { "value&quo

我的字典清单如下:

[
   {
      "name":"reach",
      "values":[
         {
            "value":0,
            "end_time":"2020-09-11T07:00:00+0000"
         },
         {
            "value":1,
            "end_time":"2020-09-12T07:00:00+0000"
         }
      ]
   },
   {
      "name":"impressions",
      "values":[
         {
            "value":0,
            "end_time":"2020-09-11T07:00:00+0000"
         },
         {
            "value":4,
            "end_time":"2020-09-12T07:00:00+0000"
         }
      ]
   },
   {
      "name":"reach",
      "values":[
         {
            "value":1,
            "end_time":"2020-09-13T07:00:00+0000"
         },
         {
            "value":2,
            "end_time":"2020-09-14T07:00:00+0000"
         }
      ]
   }
]
我希望字典的集成值键与其名称键相同,如下所示:

[
   {
      "name":"reach",
      "values":[
         {
            "value":0,
            "end_time":"2020-09-11T07:00:00+0000"
         },
         {
            "value":1,
            "end_time":"2020-09-12T07:00:00+0000"
         },
        {
            "value":1,
            "end_time":"2020-09-13T07:00:00+0000"
         },
         {
            "value":2,
            "end_time":"2020-09-14T07:00:00+0000"
         }
      ]
   },
   {
      "name":"impressions",
      "values":[
         {
            "value":0,
            "end_time":"2020-09-11T07:00:00+0000"
         },
         {
            "value":4,
            "end_time":"2020-09-12T07:00:00+0000"
         }
      ]
   }
]
但我现在还不知道。我该怎么做? 我是Python的初学者,可能不知道一些细节。
附言:我想用最小的减速来处理大量数据。

你应该先发布你的尝试,而不是要求别人这样做。然而:

new_data_dict = {}
for item in data:
    if item['name'] not in new_data_dict:
        new_data_dict[item['name']] = []
    new_data_dict[item['name']] += item['values']
new_data_list = [{'name': name, 'values': values} for name, value in new_data_dict.items()]

使用此代码,您可以在result_dict中将结果作为键值,其中key是名称,value是对应于此名称的值的列表。我认为此结构更易于维护,在转换数据后,您应该继续使用此结构。

您可以使用
itertools.groupby

from itertools import chain, groupby

data = sorted(d, key=lambda x: x['name'])
res = [{'name': k, 'values': list(chain.from_iterable(y['values'] for y in g))} for k, g in groupby(data, key=lambda x: x['name'])]

print(res)
输出:

[{'name': 'impressions',
  'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
   {'value': 4, 'end_time': '2020-09-12T07:00:00+0000'}]},
 {'name': 'reach',
  'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
   {'value': 1, 'end_time': '2020-09-12T07:00:00+0000'},
   {'value': 1, 'end_time': '2020-09-13T07:00:00+0000'},
   {'value': 2, 'end_time': '2020-09-14T07:00:00+0000'}]}]

名字是唯一的吗?如果是这样,为什么这是一个字典列表,而不是一个以名称为键的字典?这将使这更容易、更快。@MarkMeyer是的,名称是唯一的。事实上,这是api请求的响应。你是对的,我尝试了一些方法,但没有成功,没有发布我自己的努力是由于缺乏关注。谢谢
[{'name': 'impressions',
  'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
   {'value': 4, 'end_time': '2020-09-12T07:00:00+0000'}]},
 {'name': 'reach',
  'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
   {'value': 1, 'end_time': '2020-09-12T07:00:00+0000'},
   {'value': 1, 'end_time': '2020-09-13T07:00:00+0000'},
   {'value': 2, 'end_time': '2020-09-14T07:00:00+0000'}]}]