如何处理可以相似创建的多个数据及其结构非常复杂

2024-05-13 19:03:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个通知服务,用于发送普通用户和管理员用户的一些电子邮件,这些电子邮件可以与此服务收集的数据呈现。 数据结构如下所示:

schema 1 
{
    "arrearing_day": 12,
    "user_count": 32,
    "project_count": 32,
    "data": [
        {
            "user_name": "stackoverflow",
            "balance": 123,
            "estimated_per_day": 32,
            "phone": "18812314",
            "email": "14253@feing"

        },
    ]
}

schema 2
{
    "user_count": 2,
    "resource_count": 3,
    "arrearing_day": 15,
    "data": [
        {
            "user_name": "stackoverflow",
            "phone": "18816208",
            "email": "142547@stackoverflow.net",
            "projects": [
                {
                    "prject_name": "project_1",
                    "resources": [
                        {
                            "resource_type": "compute",
                            "resource_name": "compute_1",
                            "arrearing_day": 4
                        },
                    ]
                }
            ]
        },
    ]
}

schema 3 
{
    "user_count": 2,
    "resource_count": 3,
    "releasing_day": 7,
    "data": [
        {
            "user_name": "stackoverflow",
            "phone": "18816208",
            "email": "142547@stackoverflow.net",
            "projects": [
                {
                    "prject_name": "project_1",
                    "resources": [
                        {
                            "resource_type": "compute",
                            "resource_name": "compute_1",
                            "releasing_day": 4
                        },
                        {
                            "resource_type": "compute",
                            "resource_name": "compute_1",
                            "releasing_day": 4
                        },
                    ]
                },
            ]
        }
    ]
}

schema 4
{
    "user_count": 2,
    "resource_count": 3,
    "releasing_day": 7,
    "data": [
        {
            "user_name": "stackoverflow",
            "phone": "18816208",
            "email": "142547@stackoverflow.net",
            "projects": [
                {
                    "prject_name": "project_1",
                    "resources": [
                        {
                            "resource_type": "compute",
                            "resource_name": "compute_1",
                        },
                        {
                            "resource_type": "compute",
                            "resource_name": "compute_1",
                        },
                    ]
                }
            ]
        },
    ]
}

schema 5
{
    "user_name": "stackoverflow",
    "account_name": "stackoverflow_account_name",
    "scan_time": "2019-08-26 01:00:00",
    "estimated_per_day": 12,
    "balance": 122,
    "arrearing_days": 15,
    "resource_count": 3
}

schema 6
{
    "user_name": "stackoverflow",
    "account_name": "stackoverflow_account_name",
    "project_count": 2,
    "resource_count": 2,
    "data": [
        {
            "project_name": "p_1",
            "resources": [
                {
                    "resource_type": "compute",
                    "resource_name": "compute-1",
                    "releasing_days": 7
                }
            ]
        }
    ]
}

从模式1到模式6,它们都有相同的用户名、帐户名、, 项目计数,资源计数

从模式2到模式4,它们在某些属性上几乎没有什么不同

所有键及其值都可以从两个dict用户、一个或多个资源中获取

我想知道一个处理如何获取所需数据的好方法

第一次尝试:

我尝试创建了6个方法,在我创建的方法中,我首先在方法内部构建模式,并使用用户和资源或两者来实现模式

在执行这个想法的过程中,我对代码感到厌烦,这个方法太大太难看了

第二次尝试:

所以,我遇到了另一种方法,它构建了一个类似dict的

{'method:send_user_arrearing_notification': schema_1}

并在我所有的数据获取方法中使用这个dict。它看起来更好,但还是太多余了

第三次尝试:

我在想我们是否可以使用nest dict,比如:

base_dict = {
    "user_name": "stackoverflow",
    "account_name": "stackoverflow_account_name",
    "project_count": 2,
    "resource_count": 2,
}

user_notify_dict = base_dict.update({'arrearing_day': 12})

因为我是一个优秀的程序员,我不知道这是否是一个好方法,而且我不确定第一次尝试和第二次尝试是否合适

希望你们能帮助我,提前谢谢你们


Tags: 方法nameprojectschematypecount模式account