回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>考虑到以下结构:</p>
<pre><code>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]}]
</code></pre>
<p>我想得到以下结果:</p>
<pre><code>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"}]}]
</code></pre>
<p>挑战是用“persons”数组中的每个值替换id匹配的整个myObj1项值。你知道吗</p>
<p>我可以用3个for来实现这一点,但我想知道是否有一个python的方法来实现这一点,使用插值、映射、过滤器、集合等等。。我知道python这个词,但是一个面试官问了我这个问题,他告诉我应该用1-2行代码来完成。你知道吗</p>
<p>更新:
以下是我的新手方法:</p>
<pre><code>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
</code></pre>