從兩個不同的名單列表考慮以下結構:生成的關鍵
myObj1 = [{"id":1, "name":"john"},
{"id":2, "name":"roger"},
{"id":3, "name":"carlos"}]
myObj2 = [{"group": "myGroup1","persons":[1, 2, 3]},
{"group": "myGroup2", "persons":[2]},
{"group": "myGroup3", "persons":[1,3]}]
我想產生如下結果:
result = [{"group": "myGroup1","persons":[{"id":1, "name":"john"},
{"id":2, "name":"roger"},
{"id":3, "name":"carlos"}]},
{"group": "myGroup2", "persons":[{"id":2, "name":"roger"}]},
{"group": "myGroup3", "persons":[{"id":1, "name":"john"},
{"id":3, "name":"carlos"}]}]
所面臨的挑戰是每個價值在「人」數組將其替換爲id匹配的整個myObj1項目值。
我可以實現那樣使用像3的,但我想知道是否有使用插值,映射,過濾器,集等這樣做pythonic方式。我知道的蟒蛇單詞,但從這個問題得到一個採訪者,他告訴我,我應該用1-2行代碼來做到這一點。
UPDATE: 這裏是什麼是我的新手的做法:
for item in myObj1:
id = item["id"]
for item2 in myObj2:
for i in range(len(item2["persons"])):
if item2["persons"][i] == id:
item2["persons"][i] = item
感謝您的回答,看來我的主要缺少的一點是,與「in」我可以直接在第二個字典中找到值,從等式中刪除1。我認爲所有的解決方案都對我有幫助,爲了簡單起見,我將其標記爲正確的 –
@FilipeAlcântara - 歡迎您! – Transhuman