擅长:python、mysql、java
<p>这里有一个使用理解和<a href="https://docs.python.org/3/library/itertools.html#itertools.chain.from_iterable" rel="nofollow noreferrer">^{<cd1>}</a>的解决方案。首先将列表转换为集合,以进行快速成员资格测试;然后直接构建结果。它的效率不如<code>defaultdict</code>解决方案</p>
<pre class="lang-py prettyprint-override"><code>from itertools import chain
sets = { d['subId']: set(d['mainIds']) for d in data }
result = [
{'mainId': i, 'subIds': [ j for j, v in sets.items() if i in v ]}
for i in set(chain.from_iterable(sets.values()))
]
</code></pre>