3

たとえば、ネストされた辞書を取り、値を逆にしたい

input = { "a" : { "x": 2, "y": 3 },
          "b" : { "x": 5, "z": 7 } }
output = {'y': {'a': 3},
          'x': {'a': 2, 'b': 5},
          'z': {'b': 7} }

私が持っているもの:

def reverse_nest_dicts(nested_dict):
    reverse_nest_dict = {}
    for k, v in nested_dict:
        for k2, v2 in nested_dict.values():
            reverse_nest_dict[k2][k] = v2
    return reverse_nest_dict
4

4 に答える 4

2
for k2, v2 in nested_dict.values():

する必要があります

for k2, v2 in v.items():

.iteritems()(また、Python 2.x を使用している場合は、の代わりに使用する方が効率的かもしれないことに注意してください.items()。)


また、サブ辞書が初期化されていることを確認する必要があります-これは、次のいずれかを使用して行うことができますdefaultdict...

from collections import defaultdict
reverse_nest_dict = defaultdict(dict)

...または次を使用してsetdefault:

reverse_nest_dict.setdefault(k2, {})[k] = v2
于 2013-01-28T01:17:27.557 に答える