複雑な質問タイトルで申し訳ありませんが、これが私が言いたいことの例です。
変身
mydictionary = {"OuterKey1": {"InnerKey1": "Value1", "InnerKey2": "Value2"},
"OuterKey2": {"InnerKey1": "Value3", "InnerKey2": "Value4"}}
の中へ
newdictionary = {"InnerKey1" : {"OuterKey1" : "Value1", "OuterKey2" : "Value3"},
"InnerKey2" : {"OuterKey1" : "Value2", "OuterKey2" : "Value4"}}
InnerKey,OuterKey
ペアと値の関連付けは保持されていますが、順序が逆になっていることに注意してください。以前は を使用してアクセスしていた場所に、 をValue1
使用しmydictionary[OuterKey][InnerKey]
てアクセスしnewdictionary[InnerKey][OuterKey]
ます。
これを実現する直接的な方法は、最初のディクショナリを介して 2 つのネストされたループを再作成し、2 番目のディクショナリを一度に 1 要素ずつ構築することです。ただし、リスト内包表記など、よりクリーンでより Pythonic な方法があるのではないかと思います。
更新: 目的の出力について混乱があるようです。特に、変換後に OuterKey をマップする必要がある値について混乱があります。答えは、以前の外部キー (現在の内部キー) は、以前の内部キー (現在の外部キー) がマップされたのと同じ値にマップする必要があるということです。