将 JSON 处理成单独列表的最佳方法?

所以在收到带有以下代码的 JSON 后:

ctype,pdict = cgi.parse_header(self.headers.get('content-type'))
if ctype == 'application/JSON':
    length = int(self.headers.get('content-length'))
    input = JSON.loads(self.rfile.read(length))

我从 print(input) 收到了这种 JSON,它是一个字典:

{'packageInput': {'dog': [4.18,0.08,41.51,0],'cat': [2.752,3.69,2.29,'bird': [4.45,4.97,2.37,'chicken': [0.81,0.61,'0.336','min': ['1','5','max': [4,4,100,0]}}

正如我们所见,JSON 中的每个“列表”都有一个“数组”。如何将它们提取到单独的 python 列表变量中?

例如:

dog = []
cat = []
bird = []
chicken = []

我一直在研究解决方案,范围从使用 for 循环到模块导入。我相信有一个更简单的解决方案来提取这个。

你能分享一个想法吗?

HOPEHAPPY111 回答:将 JSON 处理成单独列表的最佳方法?

就像您提到的问题的评论一样,您已经有一本字典,这可能是正确的数据结构。但是,如果您需要从 dict 中提取一堆东西作为单独的项目,operator.itemgetter 是一种方便、易读的方法:

from operator import itemgetter

jsn = {'packageInput': {'dog': [4.18,0.08,41.51,0],'cat': [2.752,3.69,2.29,'bird': [4.45,4.97,2.37,'chicken': [0.81,0.61,'0.336','min': ['1','5','max': [4,4,100,0]}}

dog,cat,bird,chicken = itemgetter('dog','cat','bird','chicken')(jsn['packageInput'])

另一方面,如果您正在寻找一种动态方式来执行此操作 - 在拥有 json 之前您不知道将创建哪些变量 - 这是一个错误。它只是不起作用——毕竟你需要知道变量名以后才能在程序中使用它们。如果 print(cat) 不在 json 中,则稍后在程序中使用 "cat" 会崩溃。字典可以让你处理这个问题。

,

exec 正是您所需要的,但您应该不惜任何代价避免使用它。参考this

d = {'packageInput': {'dog': [4.18,0]}}
obj = d.get('packageInput')
for k in obj.keys():
    exec(f"{k} = {obj.get(k)}")
print(dog)
#[4.18,0]

推荐的解决方案, 将它用作已经是的字典。

dog = obj.get('dog')
本文链接:https://www.f2er.com/1839.html

大家都在问