亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python列表中集成字典

在Python列表中集成字典

慕妹3146593 2023-08-15 17:00:18
我的字典列表如下:[   {      "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的初學者,可能不知道一些細節。PS:我想以最小的減速度處理大量數據。
查看完整描述

3 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

您可以使用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'}]}]


查看完整回答
反對 回復 2023-08-15
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

d = list() # Your initial list (you don't have to copy this line but just assign your initial list to d

result_dict = dict()


for e in d:

    if result_dict.get(e['name']):

        result_dict[e['name']].extend(e['values'])

    else:

        result_dict[e['name']] = e['values']

使用此代碼,您可以在 result_dict 中獲取結果作為鍵值,其中鍵是名稱,值是與該名稱對應的值的列表。我認為這種結構更容易維護,并且在轉換數據后您應該繼續處理這種結構。


查看完整回答
反對 回復 2023-08-15
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

您確實應該首先發布您的嘗試,而不是要求別人這樣做。然而:


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()]



查看完整回答
反對 回復 2023-08-15
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號