2

口述があるとします:

x =  { "a": ["walk", "the", "dog"], "b": ["dog", "spot"], "c":["the", "spot"]  }

新しい辞書が必要です:

y = { "walk": ["a"], "the": ["a", "c"], "dog":["a", "b"], "spot":["b","c"]  }

これを行う最も効率的な方法は何ですか? ソリューションが数行であり、pythonic コンストラクトによって何らかの形で単純化されている場合、それは何ですか (最も効率的でなくても)?

これは、値がリストではなく単一の要素である他の質問とは異なることに注意してください。

4

3 に答える 3

5

使用できますdefaultdict

from collections import defaultdict

y = defaultdict(list)

for key, values in x.items():  # .iteritems() in Python 2
    for value in values:
        y[value].append(key)
于 2013-07-26T04:54:23.397 に答える
2
y = {}
for (k, v) in x.iteritems():
    for e in v:
        y.setdefault(e, []).append(k)

@Blender の回答に代わるものとしてこれを提示しました。これは私が慣れているためです[]が、内側のループのすべてのパスで一時的なものを構築することを避けるため、Blender の方が優れていると思います。

于 2013-07-26T04:57:02.833 に答える