python - 改成新的json
问题描述
所有,我正在尝试将 JSON 数据从 airtable 转换为新 JSON 中的不同形式,但是我被卡住了。这是我从 airtable 得到的 JSON:
dataset = {"records": [{"id": "recVqe2l15WKanDS1", "fields": {"confirm": "2", "state": "MA\n", "time": "2019-01-01", "predict": "2"}, "createdTime": "2020-09-19T01:53:47.000Z"},
{"id": "rechRMD3sKzsweZO8", "fields": {"confirm": "1", "state": "MA\n", "time": "2019-01-01", "predict": "1"}, "createdTime": "2020-09-19T01:53:47.000Z"},
{"id": "recnO0uTnz3LmJNGF", "fields": {"confirm": "3", "state": "MA\n", "time": "2019-01-01", "predict": "3"}, "createdTime": "2020-09-19T01:53:47.000Z"}]}
我唯一需要的是每个中的信息"fields"
和 "state"
. 所以它看起来像:
{
MA:[{"confirm": "2", "time": "2019-01-01", "predict": "2"},
{"confirm": "1", "time": "2019-01-01", "predict": "1"},
{"confirm": "3", "time": "2019-01-01", "predict": "3"}
....(there could be more state data like this)
}
在这种情况下,我首先state:MA\n
从原始数据中删除了 并用冒号将其移动到前面。这是我到目前为止尝试过的
records = dataset['records']
for i in records:
fields = i['fields']
state = i['fields'].get('state')
print(state)
输出将如下所示:
MA
MA
MA
我能够得到这样的字段数据:
records = dataset['records']
for i in records:
fields = i['fields']
print(fields)
看起来像这样:
{'confirm': '2', 'state': 'MA\n', 'time': '2019-01-01', 'predict': '2'}
{'confirm': '1', 'state': 'MA\n', 'time': '2019-01-01', 'predict': '1'}
{'confirm': '3', 'state': 'MA\n', 'time': '2019-01-01', 'predict': '3'}
我只是想知道如何改革它们,使其看起来像我想要的数据。(通过使用 python)非常感谢您的帮助!对此,我真的非常感激。
解决方案
dict
您可以在迭代时使用所需的数据构建dataset
:
results = {}
for record in dataset["records"]:
# extract and remove state
state = record["fields"].pop("state").strip()
if not state in results: # new state found
results[state] = []
# append data to corresponding state
results[state].append(record["fields"])
当我们使用 a 时,可以做得更短一点defaultdict
:
from collections import defaultdict
results = defaultdict(list)
for record in dataset["records"]:
results[record["fields"].pop("state").strip()].append(record["fields"])
输出:
{'MA': [{'confirm': '2', 'time': '2019-01-01', 'predict': '2'},
{'confirm': '1', 'time': '2019-01-01', 'predict': '1'},
{'confirm': '3', 'time': '2019-01-01', 'predict': '3'}]}
推荐阅读
- java - 日期格式和分配
- python - django queryset 无法在 annotate 和 Sum 中运行函数
- list - 从记录集创建层次结构
- android - Instagram 如何在故事模式中膨胀其背景中的图像颜色
- reactjs - Warning.js?6327:33 警告:Unknown prop `store` on
标签 - pepper - Choregraphe 的 Show Image 框没有输出
- object - Kotlin 等价于 python self.__dict__.get(item)
- c++ - 可变参数的类型冲突
- django - 如何使用 django rest 框架创建多值字段
- django - 如何通过多个 html 页面创建模型的单个实例?