所以,我把这个索引作为一个词典.
index = {'Testfil2.txt': ['nisse', 'hue', 'abe', 'pind'], 'Testfil1.txt': ['hue', 'abe', 
'tosse', 'svend']}
我需要反转索引,因此它将是一个带有重复值的dict,并将两个原始键合并为一个键作为值,如下所示:
inverse = {'nisse' : ['Testfil2.txt'], 'hue' : ['Testfil2.txt', 'Testfil1.txt'], 
'abe' : ['Testfil2.txt', 'Testfil1.txt'], 'pind' : ['Testfil2.txt'], 'tosse' : 
['Testfil1.txt'], 'svend' : ['Testfil1.txt']
是的,我手动输入上面的内容.
我的教科书有这个函数用于反转词典:
def invert_dict(d): 
    inverse = dict() 
    for key in d: 
        val = d[key] 
        if val not in inverse: 
            inverse[val] = [key] 
        else: 
            inverse[val].append(key) 
return inverse
它适用于简单的键:值对
但是,当我尝试使用具有列表作为值的dict的函数时,index我收到此错误消息:
invert_dict(index)
Traceback (most recent call last):
    File "<pyshell#153>", line 1, in <module>
invert_dict(index)
    File …我有一本看起来像这样的字典:
letters_by_number = {
  1: ['a', 'b', 'c', 'd'],
  2: ['b', 'd'],
  3: ['a', 'c'],
  4: ['a', 'd'],
  5: ['b', 'c']
}
我想将其反转为如下所示:
numbers_by_letter = {
  'a': [1, 3, 4],
  'b': [1, 2, 5],
  'c': [1, 3, 5],
  'd': [1, 2, 4]
}
我知道我可以通过遍历(键,值)letters_by_number,遍历value(这是一个列表)并将(val,key)添加到字典中的列表来做到这一点。这很麻烦,我觉得必须有一种更“ pythonic”的方式来做到这一点。有什么建议么?