【发布时间】:2019-04-09 05:37:52
【问题描述】:
我有一本如下形式的字典
dict = {
"a" : {"a1" : 1},
"b" : {"a2" : 1, "a3" : 2},
"c" : {"a2" : 3, "a4" : 3}
}
我需要反向索引字典,格式如下:
inverseDict = {
"a1" : {"a" : 1},
"a2" : {"b" : 1, "c" : 3},
"a3" : {"b" : 2},
"a4" : {"c" : 3}
}
基本上
inverseDict = {dict.value.key : { dict.key : dict.value.value}}
所以本质上,我需要将值的键作为键,将键作为值的键,同时加入重复新键的结果等。
我试过了
ks = dict.keys()
vals = dict.values()
ks2 = vals.keys()
vals2 = vals.values()
如果这有任何意义
但是我遇到了一个错误
'dict_values' object has no attribute 'keys'
据我了解,这是因为 dict.values() .keys() .items() 返回“视图”而不是实际元素本身,但我不知道如何解决这个问题。
还有一个更有效的解决方案我应该考虑,因为我的实际字典非常大(约 10k 个键),并且生成的逆字典也很大(>3k 个键)
【问题讨论】:
-
只是一个简短的评论,您需要避免使用内置关键字
dict进行赋值。您最终会遮蔽dict内置对象。 -
@Idlehands 这不是我的
dict的实际名称,只是一个“虚拟”名称。但是是的,我明白你的意思
标签: python python-3.x dictionary