我有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()
字典并保持思考(好像它应该输出其他东西但不输出)
使用2个词典的所需输出将是合并的词典:
{
"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个单词词典的超级词典?
答案 0 :(得分:0)
我真的不知道我是否理解你的问题,但这可能是一个解决方案:
dicts=[results1(),results2(),results3(),results4(),results5(),results6(),results7()]
merge_dictionaries = {k: v for d in dicts for k,v in d.items()}
很高兴知道一个清晰而简短但完整的输入和输出示例。
我猜更多的pythonic unpacking解决方案对你不起作用,因为你使用的是Python< 3.5。
答案 1 :(得分:0)
输出相应字典的函数是type
str
因此我尝试的是在Ignacio Vazquez艾布拉姆斯的帮助下获取每个函数并将它们转换为jsons
他在这篇文章中的回应Convert string to JSON using Python:
format_results1=json.loads(results1())
format_results2=json.loads(results2())
这样做后,我使用了@ gsi-frank响应,在dicts
列表中插入了format_results
。
最后我获得了合并的词典。
简而言之,问题是字典的type
,我将它们转换为json
然后能够将它们合并在一起。
感谢所有花时间阅读我的帖子和提供答案的人。