gpt4 book ai didi

python - 在 python 中从 JSON 数据创建字典列表

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:55 24 4
gpt4 key购买 nike

我想用 python 中的 json 值创建字典列表。json数据为

{
"data": [
{
"date": "2017-07-28_15-54-10",
"name": "name1",
"state": "true"
},
{
"date": "2017-07-29_15-54-10",
"name": "name2",
"state": "true"
}
]
}

我想将这些数据放入包含字典数组(json 的“数据”部分)的字典数组(名称 1、名称 2、名称 3)中,类似于

[
{
"name1": [
{
"date": "2017-07-28_15-54-10"
},
{
"state": "true"
}
]
},
{
"name2": [
{
"date": "2017-07-28_15-54-10"
},
{
"state": "true"
}
]
}
]

我得到了所有的数据,我的代码是

for jn in data:
name = jn.get("name")
my_dict = {}
my_dict1 = {}
my_list = []
my_dict["date"] = jn.get("date")
my_dict1["state"] = jn.get("state")
my_list.append(my_dict) # dict for date
my_list.append(my_dict1) # dict for state
my_name_dict = {}
my_name_dict[name] = my_list # add the small dicts to the "name" dict
my_final_array.append(my_name_dict)
print(my_final_array)

我能够得到这个输出

  {
"name1": [
{
"date": "2017-07-28_15-54-10"
},
{
"state": "true"
}
]
},
{
"name2": [
{
"date": "2017-07-28_15-54-10"
},
{
"state": "true"
}
]
}

我正在努力将这些指令添加到列表/数组中。当我打印 my_final_array 的值时,我只得到字典的最后一行,而不是列表中的所有行。我的代码也有点乱,请问还有其他办法吗?

最佳答案

使用简单的列表理解:

# if you are reading data from a file...
import json

path = "/path/to/json"
d = json.load(open(path, "r"))

# ...else
d = {
"data": [
{
"date": "2017-07-28_15-54-10",
"name": "name1",
"state": "true",
},
{
"date": "2017-07-29_15-54-10",
"name": "name2",
"state": "true",
}
]
}

records = [{x["name"]: [{"date": x["date"]}, {"state": x["state"]}]} for x in d["data"]]
records

>>> [{'name1': [{'date': '2017-07-28_15-54-10'}, {'state': 'true'}]},
{'name2': [{'date': '2017-07-29_15-54-10'}, {'state': 'true'}]}]

如果您计划向记录中添加更多键,可以通过获取除 name 之外的所有键来使此列表理解更通用,例如:

records = [
{x["name"]: [{k: v} for k, v in x.items() if k != "name"]}
for x in d["data"]
]

关于python - 在 python 中从 JSON 数据创建字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55828969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com