"重新分组"来自嵌套字典的数据

时间:2017-11-07 19:43:56

标签: python dictionary group-by python-2.x itertools

我有一个像这样的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

1 个答案:

答案 0 :(得分:1)

首先,那不是JSON。

JSON中的字符串具有双引号,而不是单引号,并且未引用的标记ab在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']
}