在python中将字典的值更改为字典的键

在python中将字典的值更改为字典的键,python,dictionary,key,key-value,Python,Dictionary,Key,Key Value,我想创建一本“真实”词典:一本荷兰语到英语的词典,包含以下单词: 翻译(字典): 正如你在荷兰语中看到的,“跨越”在英语中有两种不同的含义。 非常感谢您的帮助。给您: def reverseTranslation(d): return dict((v1,[k for k,v in d.iteritems() if v1 in v]) for v1 in set(sum(d.values(),[]))) 如果您询问如何获得该结果,最具可读性的方法是: fr

我想创建一本“真实”词典:一本荷兰语到英语的词典,包含以下单词: 翻译(字典):

正如你在荷兰语中看到的,“跨越”在英语中有两种不同的含义。 非常感谢您的帮助。

给您:

def reverseTranslation(d):
    return dict((v1,[k for k,v in d.iteritems() if v1 in v])
                for v1 in set(sum(d.values(),[])))

如果您询问如何获得该结果,最具可读性的方法是:

from collections import defaultdict

def reverse_dictionary(dictionary):
    result = defaultdict(list)
    for key, meanings in dictionary.iteritems():  #or just .items()
        for meaning in meanings:
            result[meaning].append(key)
    return result
或者,您可以先对值求和,然后在字典上迭代

d= {'tension': ['spanning'], 'voltage': ['spanning', 'voltage'],'extra':['voltage']}
val = set(reduce(list.__add__,d.values()))

dict={}
for x in val:
    tmp={x:[]}
    for k,v in d.items():
        if x in v:
           tmp[x].append(k)
    dict.update(tmp)

print dict

注意:集合仅在python 2.4及更高版本中可用,因此问题是……python是有效的,问题是什么?
d= {'tension': ['spanning'], 'voltage': ['spanning', 'voltage'],'extra':['voltage']}
val = set(reduce(list.__add__,d.values()))

dict={}
for x in val:
    tmp={x:[]}
    for k,v in d.items():
        if x in v:
           tmp[x].append(k)
    dict.update(tmp)

print dict