我有一个像这样的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
答案 0 :(得分:1)
首先,那不是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']
}