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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在沒有循環(huán)的情況下更新字典列表?

如何在沒有循環(huán)的情況下更新字典列表?

Go
狐的傳說 2023-06-20 13:48:35
我有一個(gè)N字典列表,以及一個(gè)N字符串列表。對(duì)于前者的每個(gè)字典,我想用后者的相應(yīng)字符串附加/更新一個(gè)鍵值對(duì)。例如:names = [{'First':'John','Last':'Doe'} , {'First':'Jane','Last':'Doe'}]ages = ['21','32']以下循環(huán)有效:for i,j in zip(names,ages):    i.update({'Age':j})    print(i)部分是為了智力挑戰(zhàn),但部分是為了適應(yīng)最終的并行處理,我想在沒有循環(huán)的情況下解決同樣的問題。我的兩次嘗試都沒有成功;都返回了None類型的列表:第一次嘗試:f = lambda x: x[0].update({'Age':x[1]})out = map(f,zip(names,ages))for i in out: print(i)第二次嘗試:out = (i.update({'Age':j}) for i,j in zip(names,ages))for i in out: print(i)是什么賦予了?
查看完整描述

1 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

使用 dict unpacking operator **,應(yīng)該可以返回一個(gè)合并的 dict 作為 map 的結(jié)果,而根本不修改原始的。


f = lambda x: {**x[0], 'Age': x[1]}

out = map(f,zip(names,ages))

print(list(out))

# [{'First': 'John', 'Last': 'Doe', 'Age': '21'}, 

#  {'First': 'Jane', 'Last': 'Doe', 'Age': '32'}]

這是一個(gè)不太常見的習(xí)慣用法,您可以使用它來動(dòng)態(tài)合并字典。當(dāng)它在幾個(gè)月后發(fā)布時(shí),Python 3.9 將為|運(yùn)算符添加一個(gè)重載,這將允許您做一些類似的事情x[0] | {'Age': x[1]}來更清楚地獲得相同的結(jié)果,但現(xiàn)在這應(yīng)該符合您的目的。


這應(yīng)該使解決方案更容易并行化,但請(qǐng)記住循環(huán)for可以很好地用于并行化,只要每個(gè)元素都獨(dú)立于其他元素 - 您可以將列表分成塊并將一個(gè)塊交給每個(gè)并行進(jìn)程. 與您已經(jīng)使用的方法相比,這種方法的唯一好處是各種并行進(jìn)程將不再寫入內(nèi)存中的相同數(shù)據(jù)結(jié)構(gòu)。


查看完整回答
反對(duì) 回復(fù) 2023-06-20
  • 1 回答
  • 0 關(guān)注
  • 156 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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