1 回答

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)。
- 1 回答
- 0 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)