【问题标题】:Split list values inside dictionary to separate dictionaries将字典内的列表值拆分为单独的字典
【发布时间】:2019-11-05 01:39:20
【问题描述】:

我有来自烧瓶应用程序的以下 json 响应,我想知道如何将其拆分为多个“行”/dicts。

输出:

{'class': [0.0, 1.0],
 'probability': [0.8488858872836712, 0.1511141127163287]}

我想要的是:

[{"class": 0.0, "probability": 0.8488858872836712},{"class": 1.0, "probability": 0.1511141127163287}]

我尝试了类似以下的方法,但不确定如何获取两个密钥:

{k: v for e in zip(model.classes_, probabilities[0]) for k, v in zip(('class', 'probability'), e)}

【问题讨论】:

    标签: python json dictionary flask


    【解决方案1】:

    更通用的解决方案(如果您不提前知道键名):

    d = {'class': [0.0, 1.0], 'probability': [0.8488858872836712, 0.1511141127163287]}
    result = [dict(zip(d.keys(), i)) for i in zip(*d.values())]
    

    输出:

    [{'class': 0.0, 'probability': 0.8488858872836712}, {'class': 1.0, 'probability': 0.1511141127163287}]
    

    【讨论】:

    • 不错的解决方案。我正在考虑做类似的事情,但我还没有这个技能。 :-)
    • @accdias 谢谢。您的解决方案也很好,如果 OP 确实提前知道键名,那么简单的 zip 就足够了。
    【解决方案2】:

    假设输出存储在d,你可以这样做

    [{'class': c, 'probability': p} for c,p in zip(d['class'], d['probability'])]
    

    这将导致:

    [{'class': 0.0, 'probability': 0.8488858872836712},
     {'class': 1.0, 'probability': 0.1511141127163287}]
    

    这是一个概念证明:

    Python 3.7.5 (default, Oct 17 2019, 12:16:48) 
    [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from pprint import pprint
    >>> d={'class': [0.0, 1.0],
    ...  'probability': [0.8488858872836712, 0.1511141127163287]}
    >>> pprint([{'class': c, 'probability': p} for c,p in zip(d['class'], d['probability'])])
    [{'class': 0.0, 'probability': 0.8488858872836712},
     {'class': 1.0, 'probability': 0.1511141127163287}]
    >>> 
    

    【讨论】:

      【解决方案3】:

      使用列表理解拆分 json

      dic = { 'class': [0.0, 1.0], 'probability': [0.8488858872836712, 0.1511141127163287] }
      
      split_value = [{'class':i,'probability':j} for i,j in zip(dic['class'],dic['probability'])]
      
      print(split_value)
      

      输出:-

      [{'class': 0.0, 'probability': 0.8488858872836712}, {'class': 1.0, 'probability': 0.1511141127163287}]
      

      【讨论】:

        猜你喜欢
        • 2020-02-08
        • 2021-09-09
        • 2010-12-19
        • 1970-01-01
        • 2021-05-21
        • 1970-01-01
        • 2021-05-14
        • 2011-05-04
        • 1970-01-01
        相关资源
        最近更新 更多