很抱歉我的题目很复杂,但这里有一个例子来说明我的意思。你知道吗
变换
mydictionary = {"OuterKey1": {"InnerKey1": "Value1", "InnerKey2": "Value2"},
"OuterKey2": {"InnerKey1": "Value3", "InnerKey2": "Value4"}}
进入
newdictionary = {"InnerKey1" : {"OuterKey1" : "Value1", "OuterKey2" : "Value3"},
"InnerKey2" : {"OuterKey1" : "Value2", "OuterKey2" : "Value4"}}
注意InnerKey,OuterKey
对与值的关联是如何保持的,但是它们的顺序只是颠倒了。我们以前使用mydictionary[OuterKey][InnerKey]
访问Value1
,现在使用newdictionary[InnerKey][OuterKey]
访问它。你知道吗
实现这一点的直接方法是通过第一个dictionary重新创建两个嵌套循环,然后每次构建一个元素来构建第二个dictionary。 然而,我想知道是否有一个更干净的/更python的方法来做到这一点,比如列表理解。你知道吗
更新:似乎对期望的输出有一些混淆。特别是,在转换之后,OuterKey应该映射到哪个值,这是一个混乱的问题。 答案是前一个外键(现在是内键)应该映射到前一个内键(现在是外键)映射到的相同值。你知道吗
在本例中,我发现在循环中使用
setdefault
(或defaultdict
)比理解更具可读性。毕竟,“可读性很重要……”:同样使用
defaultdict
:像这样:
相关问题 更多 >
编程相关推荐