人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Python編程根據(jù)字典列表相同鍵的值進(jìn)行合并

發(fā)布日期:2021-12-28 21:09 | 文章來(lái)源:站長(zhǎng)之家

一、

今天有粉絲咨詢了一個(gè)問(wèn)題,他現(xiàn)在有兩個(gè)列表,它們的元素都為字典,且字典都有一個(gè)key為id,現(xiàn)在想把這兩個(gè)字典根據(jù)id合并為一個(gè)字典,類型下面的效果:

兩個(gè)列表的數(shù)據(jù)為:

a_list = [{'id': 1, 'value': 11}, {'id': 2, 'value': 22}, {'id': 3, 'value': 33}]
b_list = [{'id': 1, 'name': 'a'}, {'id': 2, 'name': 'b'}, {'id': 3, 'name': 'c'}]

期望合并的結(jié)果

[{'id': 1, 'name': 'a', 'value': 11},
 {'id': 2, 'name': 'b', 'value': 22},
 {'id': 3, 'name': 'c', 'value': 33}]

二、實(shí)現(xiàn)分析

這是粉絲寫的實(shí)現(xiàn)代碼:

for i in range(len(b_list)):
 for a in a_list:
  if b_list[i]['id'] == a['id']:
b_list[i]['value'] = a['value']
print(b_list)

通過(guò)兩個(gè)for循環(huán)來(lái)將a_list中元素字典id值等于b_list元素字段id值的值加入到對(duì)應(yīng)的b_list元素字典中。

實(shí)際上兩行代碼就可以解決這個(gè)問(wèn)題:

1.我們可以先通過(guò)推導(dǎo)式將a_list重新組裝為{id:value}的形式

a_values = {a['id']: a['value'] for a in a_list}

a_values的值為:

{1: 11, 2: 22, 3: 33}

2.然后再通過(guò)推導(dǎo)式和字典解構(gòu)再合并的方式將值與b_list重新組裝:

res_list = [{**b, **{'value': a_values[b['id']]}} for b in b_list]

組裝后的列表值為

res_list的值為: 
[{'id': 1, 'name': 'a', 'value': 11},
 {'id': 2, 'name': 'b', 'value': 22}, 
 {'id': 3, 'name': 'c', 'value': 33}]

完整示例代碼

a_list = [{'id': 1, 'value': 11}, {'id': 2, 'value': 22}, {'id': 3, 'value': 33}]
b_list = [{'id': 1, 'name': 'a'}, {'id': 2, 'name': 'b'}, {'id': 3, 'name': 'c'}]
a_values = {a['id']: a['value'] for a in a_list}
res_list = [{**b, **{'value': a_values[b['id']]}} for b in b_list]
print('res_list的值為:', res_list)

當(dāng)然一行代碼也可以搞定,直接把兩個(gè)推導(dǎo)式合并

res_list = [{**b, **{'value': {a['id']: a['value'] for a in a_list}[b['id']]}} for b in b_list]

但這就是為了裝X而寫代碼了,毫無(wú)必要!

三、總結(jié)

就是推導(dǎo)式和字典通過(guò)**解構(gòu)來(lái)合并這兩個(gè)知識(shí)點(diǎn)。

以上就是Python學(xué)習(xí)字典列表根據(jù)相同鍵的值進(jìn)行合并的詳細(xì)內(nèi)容,更多關(guān)于Python字典列表鍵值合并的資料請(qǐng)關(guān)注本站其它相關(guān)文章!

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部