擅长:python、mysql、java
<p>不能使用<code>list</code>对象作为字典键,因为它们应该是散列对象。您可以循环您的项并使用<code>dict.setdefault</code>方法创建预期结果:</p>
<pre><code>>>> new = {}
>>>
>>> for k,value in index.items():
... for v in value:
... new.setdefault(v,[]).append(k)
...
>>> new
{'hue': ['Testfil2.txt', 'Testfil1.txt'], 'svend': ['Testfil1.txt'], 'abe': ['Testfil2.txt', 'Testfil1.txt'], 'tosse': ['Testfil1.txt'], 'pind': ['Testfil2.txt'], 'nisse': ['Testfil2.txt']}
</code></pre>
<p>如果您处理的是拒绝在每次调用<code>setdefault()</code>方法时创建空列表的较大数据集,则可以使用<code>collections.defaultdict()</code>,它将在遇到新键时调用丢失的函数。</p>
<pre><code>from collections import defaultdict
new = defaultdict(list)
for k,value in index.items():
for v in value:
new[v].append(k)
>>> new
defaultdict(<type 'list'>, {'hue': ['Testfil2.txt', 'Testfil1.txt'], 'svend': ['Testfil1.txt'], 'abe': ['Testfil2.txt', 'Testfil1.txt'], 'tosse': ['Testfil1.txt'], 'pind': ['Testfil2.txt'], 'nisse': ['Testfil2.txt']})
</code></pre>