代码之家  ›  专栏  ›  技术社区  ›  JamesHudson81

努力合并2本以上的词典

  •  0
  • JamesHudson81  · 技术社区  · 7 年前

    results1()=
    {
     "NO4": 
      {
       "type_tests":
        {
         "test1":1.0,
         "test2":5.0,
         "test3":14.0
        }
      },
     "SO3": 
        {
         "type_tests":
        {"test1":1.0,
         "test2":5.0,
         "test3":14.0}
      }
    }
    
    results2()=
    {
     "CO2": 
      {
       "type_tests":
        {
         "test1":10.0,
         "test2":51.0,
         "test3":34.0
        }
      },
     "H20": 
        {
         "type_tests":
        {"test1":1.0,
         "test2":5.0,
         "test3":14.0}
      }
    }
    

    我试着把这篇文章后面的7本词典合并起来:

    How to merge two dictionaries in a single expression?

    merge_dictionaries={**results1(),**results2(),**results3(),**results4(),**results5(),**results6(),**results7()}
    return merge_dictionaries
    

    但是,当我运行合并字典时,它会输出:

    TypeError: 'str' object is not a mapping
    

    merging "several" python dictionaries ,我试着:

    dicts=[results1(),results2(),results3(),results4(),results5(),results6(),results7()]
    
    for d in dicts:
        for k, v in d.iteritems():
            super_dict[k].add(v)
        return superdict
    

    results7() 字典并保持思考(好像它应该输出其他东西,但没有)

    使用这两个字典的所需输出将是合并的字典:

    {
    "NO4": 
        {
        "type_tests":
            {
             "test1":1.0,
             "test2":5.0,
             "test3":14.0
            }
         },
     "SO3": 
         {
        "type_tests":
            {
             "test1":1.0,
             "test2":5.0,
             "test3":14.0
            }
          },
    "CO2": 
          {
         "type_tests":
            {
            "test1":10.0,
            "test2":51.0,
            "test3":34.0
          }
         },
     "H20": 
          {
          "type_tests":
           {
            "test1":1.0,
            "test2":5.0,
            "test3":14.0
        }
      }
    }
    

    我怎样才能把这7本字典合并成一本超级字典呢?

    2 回复  |  直到 7 年前
        1
  •  0
  •   user1785721 user1785721    7 年前

    dicts=[results1(),results2(),results3(),results4(),results5(),results6(),results7()]
    
    merge_dictionaries = {k: v for d in dicts for k,v in d.items()}
    

    很高兴知道一个清晰、简短但完整的输入和输出示例。

    unpacking 解决方案不适用于您,因为您正在使用Python<3.5.

        2
  •  0
  •   JamesHudson81    7 年前

    type str jsons 在伊格纳西奥·巴斯克斯·艾布拉姆斯的帮助下,他在这篇文章中做出了回应 Convert string to JSON using Python :

    format_results1=json.loads(results1())
    format_results2=json.loads(results2())
    

    在这样做之后,我使用@gsi-frank响应,插入 dicts 列出 format_results 最后我得到了合并后的词典。

    json