首页 > 解决方案 > 从 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, ...},
    ...
}

标签: pythonjson

解决方案


哦,只是为了挑战;-)。

虽然有一种更简单的方法来注册用户访问的页面,但我将在这里发布一种功能性方法。

您发布的数据结构似乎并不复杂,我认为以下内容应该适合您。首先,您需要一个数据样本列表。每个示例都包含页面和用户。然后,您可以简单地按用户分组并根据需要检索条目以进行进一步处理。

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)

推荐阅读