【问题标题】:"Regrouping" data from nested dictionaries“重新组合”嵌套字典中的数据
【发布时间】:2017-11-07 19:43:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案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']
    }
    

    【讨论】:

    • 成功了!谢谢你。抱歉我的 JSON 格式错误。
    猜你喜欢
    • 2019-04-06
    • 2019-12-04
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多