第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

有沒有更有效的方法來獲得結(jié)果(O(n+m) 而不是 O(n*m))?

有沒有更有效的方法來獲得結(jié)果(O(n+m) 而不是 O(n*m))?

暮色呼如 2021-12-21 17:00:14
Origin data如下所示,每個項(xiàng)目都有一個類型標(biāo)記,例如interests, family, behaviors, etc我想按此類型字段分組。return_data = [{      "id": "112",      "name": "name_112",      "type": "interests",    },    {      "id": "113",      "name": "name_113",      "type": "interests",    },      {      "id": "114",      "name": "name_114",      "type": "interests",    },      {      "id": "115",      "name": "name_115",      "type": "behaviors",    },         {      "id": "116",      "name": "name_116",      "type": "family",    },         {      "id": "117",      "name": "name_117",      "type": "interests",    },    ...]和expected ouput數(shù)據(jù)格式,如:output_data = [    {"interests":[        {          "id": "112",          "name": "name_112"        },        {          "id": "113",          "name": "name_113"        },        ...        ]    },    {        "behaviors": [            {                "id": "115",                "name": "name_115"            },            ...        ]    },    {        "family": [            {                "id": "116",                "name": "name_116"            },            ...        ]    },    ...]這是我的試驗(yàn):type_list = []for item in return_data:    if item['type'] not in type_list:        type_list.append(item['type'])interests_list = []for type in type_list:    temp_list = []    for item in return_data:        if item['type'] == type:            temp_list.append({"id": item['id'], "name": item['name']})    interests_list.append({type: temp_list})顯然我的試驗(yàn)效率低下,因?yàn)樗?O(n*m),但我找不到更有效的方法來解決問題。有沒有更有效的方法來獲得結(jié)果?非常歡迎任何評論,謝謝。
查看完整描述

2 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊

使用 adefaultdict存儲每種類型的項(xiàng)目列表:


from collections import defaultdict


# group by type

temp_dict = defaultdict(list)

for item in return_data:

    temp_dict[item["type"]].append({"id": item["id"], "name": item["name"]})


# convert back into a list with the desired format

output_data = [{k: v} for k, v in temp_dict.items()]

輸出:


[

    {

        'behaviors': [

            {'name': 'name_115', 'id': '115'}

        ]

    }, 

    {

        'family': [

            {'name': 'name_116', 'id': '116'}

        ]

    }, 

    {

        'interests': [

            {'name': 'name_112', 'id': '112'},

            {'name': 'name_113', 'id': '113'},

            {'name': 'name_114', 'id': '114'},

            {'name': 'name_117', 'id': '117'}

        ]

    },

    ...

]

如果您不想 import defaultdict,您可以使用帶有以下內(nèi)容的香草字典setdefault:


# temp_dict = {}


temp_dict.setdefault(item["type"], []).append(...)

行為方式完全相同,但效率稍低。


查看完整回答
反對 回復(fù) 2021-12-21
?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊

地圖請參閱Python 字典。


for item in return_data:

typeMap[item['type']] = typeMap[item['type']]  + delimiter + item['name']


查看完整回答
反對 回復(fù) 2021-12-21
  • 2 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號