Python 如何使用多个字典转换字符串,以便json.load可以解析它?

Python 如何使用多个字典转换字符串,以便json.load可以解析它?,python,json,dictionary,Python,Json,Dictionary,我如何用python编写一个函数,将一个字符串和多个字典(每行一个)转换成json.loads可以在一次执行中解析整个字符串 例如,如果输入为(每行一个字典): 这不会使用json.loads(输入)进行解析。我需要编写一个函数来修改它,以便它能够正确解析。 我在想,如果函数可以将其更改为类似的内容,json将能够解析它,但不确定如何实现这一点: Input2 = """{ "Dict1" : {"a":[1,2,3], "b":[4,5]}, "Dict2" :

我如何用python编写一个函数,将一个字符串和多个字典(每行一个)转换成json.loads可以在一次执行中解析整个字符串

例如,如果输入为(每行一个字典):

这不会使用json.loads(输入)进行解析。我需要编写一个函数来修改它,以便它能够正确解析。 我在想,如果函数可以将其更改为类似的内容,json将能够解析它,但不确定如何实现这一点:

Input2 = """{ "Dict1" : {"a":[1,2,3], "b":[4,5]},
               "Dict2" : {"z":[-1,-2], "x":-3} }"""
不是像您要求的那样以函数形式,但是代码几乎是一样的。此外,这将在列表中生成dict

添加以下内容可能对您有用

>>> d = {('Dict'+str(i+1)):v for i in range(len(j)) for v in j}
>>> d
>>> {'Dict1': {u'x': -3, u'z': [-1, -2]}, 'Dict2': {u'x': -3, u'z': [-1, -2]}}

逐行解析字符串的可能重复项;如果不是从文件中,那么使用
str.splitlines()
将其拆分为一个行列表。我在你提到的帖子中没有找到我想要的内容。我必须将输入更改为input2,然后将其加载到json。Splitlines并没有像Dict1或Dict2那样创建字典键。不,您的做法是错误的
Input2
不是有效的JSON,您只需要一个所有对象的列表。每行包含一个JSON对象;这样解析它们,并在这样做时构建列表。基本上,主要对象是从input获取input2。感谢您的输入,但我要寻找的是,每一行都应该被视为一个字典。所以,“Dict1:{a:[1,2,3],“b:[4,5]}(第一行的全部内容),那么Dict2应该是第二行的全部内容。我在我的帖子中添加了一些内容。我不确定这是否是你的意思,但这似乎是朝着正确的方向迈出的一步?你的意思是你想要一个字典,其中的值是字符串每一行的字典吗?我很抱歉这么晚才回复。是的,我要听写1第一行的所有内容,听写2第二行的所有内容,依此类推。我看到了你在帖子中添加的内容,它正在做我想做的事情,但我不是很擅长Python,也不清楚这段代码到底在做什么。很高兴我能帮上忙。在第一段代码中,我使用“列表理解”将列表分配给“dict_list”和“j”。如果您不知道列表理解是什么,我建议您立即用谷歌搜索“python列表理解”,以了解python最方便的功能之一。在第二块中,我使用“字典理解”将字典分配给“d”。你应该在掌握了列表的理解之后用谷歌搜索一下。所涉及的概念不需要很长时间就能理解,正如您所看到的,它们非常有用(并且令人满意)。
>>> import json  
>>>
>>> dict_str = """{"a":[1,2,3], "b":[4,5]}
>>>               {"z":[-1,-2], "x":-3}"""
>>>
>>> #strip the whitespace away while making list from the lines in dict_str 
>>> dict_list = [d.strip() for d in dict_str.splitlines()]
>>>                                                        
>>> dict_list
>>> ['{"a":[1,2,3], "b":[4,5]}', '{"z":[-1,-2], "x":-3}']
>>>
>>> j = [json.loads(i) for i in dict_list]
>>> j
>>> [{u'a': [1, 2, 3], u'b': [4, 5]}, {u'x': -3, u'z': [-1, -2]}]
>>> d = {('Dict'+str(i+1)):v for i in range(len(j)) for v in j}
>>> d
>>> {'Dict1': {u'x': -3, u'z': [-1, -2]}, 'Dict2': {u'x': -3, u'z': [-1, -2]}}