【发布时间】:2018-02-14 16:58:06
【问题描述】:
在python中我们可以得到一个键的父键路径吗,我的json看起来像下面.. 例如,如果我输入 a1:它应该给出:PROJ1/LOB1。 list[] 中的所有键都是唯一的
{
'PROJ1': {
u'LOB1': [u'a1', u'a2'],
u'LOb2': [u'v1', u'v2'],
u'LOBA': [u'o1', u'oa', u'o2', u'o3'],
u'LOBX': [u'n1', u'n2'],
u'LOB': [u'b1', u'b2']
},
'PROJ12': {
u'LOBa': [u'aa1', u'aa2'],
u'LOBX': [u'vx1', u'vx2']
},
}
我在另一个线程上发现了这个,但它不适用于上述数据。失败:unhashable type: 'list'
def keypaths(myDict):
for key, value in myDict.items():
if isinstance(value, collections.Mapping):
for subkey, subvalue in self.keypaths(value):
yield [key] + subkey, subvalue
else:
yield [key], value
reverse_dict = {value: keypath for keypath, value in keypaths(example_dict)}
【问题讨论】:
-
您的数据在代码中运行良好。你在哪里得到错误?
-
@Idlehands 我忘了添加这一行:
reverse_dict = {value: keypath for keypath, value in keypaths(example_dict)} -
您的值为
list和dicts 不能接受此数据类型作为键。可以通过使用str(value)来制作list的字符串表示,然后dict将接受它作为键,但我不确定这是否是您想要实现的。 -
我正在尝试获取密钥的密钥路径,如果我输入 a1:它应该给出:PROJ1/LOB1。 list[] 中的所有键都是唯一的
-
什么应该给出:PROJ1/LOB1?创建反向字典与输入
1并获得期望结果(来自 something)有什么关系?
标签: python json python-2.7 data-structures