python - 从 json 中提取密钥
问题描述
我正在 python 框架烧瓶中创建分数 Web 应用程序。所以我有一个包含以下内容的 JSON 文件
{
"page1": {
"pr": {
"user": "A",
"timestamp": "2017-02-23T23:08:53Z"
},
...
},
"page2": {
"pr": {
"user": "A",
"timestamp": "2017-02-23T23:11:01Z"
},
...
},
...
}
我在python中通过这个读取文件
with open("result.json", encoding="utf8") as file:
data = json.load(file)
我想提取关于“用户”的“pr”的“页面”键,并保存到另一个 JSON 文件中,内容如下
{
"A": { page1, page2, ...},
"B": { page1, page2, ...},
...
}
解决方案
哦,只是为了挑战;-)。
虽然有一种更简单的方法来注册用户访问的页面,但我将在这里发布一种功能性方法。
您发布的数据结构似乎并不复杂,我认为以下内容应该适合您。首先,您需要一个数据样本列表。每个示例都包含页面和用户。然后,您可以简单地按用户分组并根据需要检索条目以进行进一步处理。
import toolz
import toolz.curried
stuff = {
"page1": {
"pr": {
"user": "A",
"timestamp": "2017-02-23T23:08:53Z"
}
},
"page2": {
"pr": {
"user": "A",
"timestamp": "2017-02-23T23:11:01Z"
}
},
"page3": {
"pr": {
"user": "b",
"timestamp": "2017-02-23T23:11:01Z"
}
}
}
transformed_stuff = [{'page': page, **value} for page, value in stuff.items()]
get_user = toolz.curried.get_in(['pr', 'user'])
toolz.groupby(get_user, transformed_stuff)
推荐阅读
- java - Install4j - 如何在 UI 表单中添加组框
- php - 在mysql php中得到真假结果
- vue.js - 在 Vue 子组件中提取道具中的信息
- html - SVG:如何在元素内均匀地居中多行文本?
- c - C - 在阅读 CTRL+Z 之前如何阅读短语?
- javascript - 检测您的网页是否在应用程序的 WebView 中查看?
- fortran - Fortran 编译器指示无效表达式
- azure-devops - 如何通过 Azure Devops 将 UWP 包发布到 Windows 应用商店?
- ios - Unity Cloud Build iOS 错误 Undefined symbols for architecture armv7
- java - 如何在 Flink 中使用 Java 将 AvroFile 读入 Tuple 类