"Regrouping" 来自嵌套字典的数据
"Regrouping" data from nested dictionaries
我有一个这样的 JSON 文档:
{
'item1':{
'value':[a,b],
'number':1
},
'item2':{
'value':[a],
'number':2
},
'item3':{
'value':[b],
'number':3
}
}
是否可以获取按值分组的项目名称?
这是我想要的:
a: item1, item2
b: item1, item3
我尝试了以下方法,但没有用:
l = sorted(l.iteritems())
for key, group in groupby(l,key=lambda x:x['value']):
print key, group
首先,那不是 JSON。
JSON 中的字符串有双引号,而不是单引号,不带引号的标记 a
和 b
在 JSON 中没有意义。假设您的实际文档看起来像这样:
{
"item1": {
"value": ["a", "b"],
"number": 1
},
"item2": {
"value": ["a"],
"number": 2
},
"item3": {
"value": ["b"],
"number": 3
}
}
…并且你已经将它加载到Python字典data
中,你可以得到你想要的输出如下:
grouped = {}
for key, subdict in data.items():
for value in subdict['value']:
grouped.setdefault(value, []).append(key)
这会让你 grouped
看起来像这样:
{
'a': ['item2', 'item1'],
'b': ['item3', 'item1']
}
我有一个这样的 JSON 文档:
{
'item1':{
'value':[a,b],
'number':1
},
'item2':{
'value':[a],
'number':2
},
'item3':{
'value':[b],
'number':3
}
}
是否可以获取按值分组的项目名称?
这是我想要的:
a: item1, item2
b: item1, item3
我尝试了以下方法,但没有用:
l = sorted(l.iteritems())
for key, group in groupby(l,key=lambda x:x['value']):
print key, group
首先,那不是 JSON。
JSON 中的字符串有双引号,而不是单引号,不带引号的标记 a
和 b
在 JSON 中没有意义。假设您的实际文档看起来像这样:
{
"item1": {
"value": ["a", "b"],
"number": 1
},
"item2": {
"value": ["a"],
"number": 2
},
"item3": {
"value": ["b"],
"number": 3
}
}
…并且你已经将它加载到Python字典data
中,你可以得到你想要的输出如下:
grouped = {}
for key, subdict in data.items():
for value in subdict['value']:
grouped.setdefault(value, []).append(key)
这会让你 grouped
看起来像这样:
{
'a': ['item2', 'item1'],
'b': ['item3', 'item1']
}