擅长:python、mysql、java
<p><strong>这应该可以完成工作:</strong></p>
<pre><code>>>> scratch = {v : k for d in L1 for k, v in d.items()}
>>> for d in L2:
for k, v in d.items():
if v not in scratch:
scratch['v'] = ''
scratch[v] += k
>>> result = [{v: k} for k, v in scratch.items()]
>>> result
[{'DP': 'Jim Jones'}, {'D': 'Tom Jones'}, {'DP': 'Bob Jones'}]
</code></pre>
<p><strong>下面是它正在做的事情:</strong></p>
<p><em>步骤1)</em>以<em>名称</em>为键构建一个<em>scratch</em>字典:</p>
<pre><code>scratch = {'Jim Jones': 'D', 'Tom Jones': 'D', 'Bob Jones': 'D'}
</code></pre>
<p><em>步骤2)</em>在<em>L2</em>中的名称上循环,然后在<em>scratch</em>中查找名称并更新其值</p>
<pre><code>scratch['Jim Jones'] += 'P'
</code></pre>
<p><em>步骤3)</em>将scratch字典重新转换为字典列表:</p>
<pre><code>result = [{'DP': 'Jim Jones'}, {'D': 'Tom Jones'}, {'DP': 'Bob Jones'}]
</code></pre>
<p><strong>解决问题的关键</strong></p>
<p>其核心思想是名称应该是单个词典中的键。这使得查找和更新变得很容易</p>
<p>希望这有帮助:-)</p>