2012-11-21 73 views
0

我想創建一個「真正的」詞典:荷蘭英語字典,下面的話: 高清reversTranslation(字典):字典的值更改爲一個字典的關鍵在python

>>> dictionary= {'tension': ['spanning'], 'voltage': ['spanning', 'voltage']} 
>>> dictionary= reverseTranslation(dictionary) 
>>> dictionary 
{'spanning': ['tension', 'voltage'], 'voltage': ['voltage']} 

正如你在荷蘭'跨越'中看到的那樣,在英語中有兩種不同的含義。 幫助將不勝感激。

+10

所以,問題是... – alexvassel

+3

蟒蛇是有效的,這是什麼問題? –

回答

1

在這裏你去:

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

如果你問如何獲得這一結果,最可讀的方式是:

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 

或者你可以先總結值,然後反覆詞典。

0
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 

注:收藏只能從蟒蛇2.4及更高版本