擅长:python、mysql、java
<p>您可以使用以下理解构建dicTfAllP:</p>
<pre><code>dicTfAllP = {k:{**dicTfAll.get(k,{}),**dicTf.get(k,{})} for k in set(dicTfAll).union(dicTf)}
</code></pre>
<p>对于输出公司,您需要itertools的<code>groupby</code>帮助:</p>
<pre><code>from itertools import groupby
outputCompanies = {c:dict((k,v) for _,k,v in vs) for c,vs in groupby(sorted( (c,v,n) for n,cs in dicTfAllP.items() for c,vs in cs.items() for v in vs),key=lambda x:x[0])}
</code></pre>
<p>由于上面这行有点复杂,您可以对其进行分解以保持内容清晰:</p>
<pre><code>companyPairs = ((c,v,n) for n,cs in dicTfAllP.items() for c,vs in cs.items() for v in vs)
groupedData = groupby(sorted(companyPairs),key=lambda x:x[0])
outputCompanies = {c:dict((k,v) for _,k,v in vs) for c,vs in groupedData }
</code></pre>
<p>检查中间结果可以让您了解发生了什么</p>