0

「本物の」辞書を作成したい:次の単語を含むオランダ語から英語への辞書:def reversTranslation(dictionary):

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

オランダ語でわかるように、「スパニング」には英語で2つの異なる意味があります。ヘルプをいただければ幸いです。

4

3 に答える 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(),[])))
于 2012-11-21T13:05:29.297 に答える
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

または、最初に値を合計してから、ディクショナリを反復処理することもできます。

于 2012-11-21T13:07:18.193 に答える
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

注:コレクションは、Python2.4以降からのみ利用できます。

于 2012-11-21T16:10:53.890 に答える