让我们有一个以下的词:
table = {x1: {y1: 1, y2:2},
x2: {y1: 3, y2:4},
x3: {y3: 5, y2:6}
}
Run Code Online (Sandbox Code Playgroud)
考虑到值是唯一的,有没有办法根据值有效地查询关键路径,或者最好使用值作为关键字来重建字典?
例:
result = magic_function(table, 3)
result --> [x2, y1]
Run Code Online (Sandbox Code Playgroud)
谢谢,
"反转"字典的惯用方法是这样的:
i = {v: k for (k, v) in d.items()}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Python 2而不是3,并且d可能很大,请使用iteritems.
在你的情况,你有一个dict的dicts,并且要排序的双反转它的进入dict路径,如果我理解正确.但你不知道怎么写.所以,让我们从明确的写作开始,漫长的道路:
i = {}
for k, v in d.items():
for k2, v2 in v.items():
i[v2] = (k, k2)
Run Code Online (Sandbox Code Playgroud)
你可以把它转换成字典理解,但你希望它是你真正理解的东西,而不是你不经思考地复制和粘贴的魔法调用,所以我会把那部分留给你(但我会很高兴的如果您有任何疑问,请提供帮助).