使用一个元组

2024-03-28 16:04:20 发布

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

我有一个脚本,它发出一个DB调用,然后以元组的形式返回结果。DB调用跟踪从年到数据、从月到日和从周到日格式的数据。你知道吗

由于新的财政年度,我不再像预期的那样获取某些项目的任何年初至今的数据,但是如果DB没有返回任何内容,我需要在元组中创建一个条目,这样最终的表将显示所有位置,如果没有返回任何内容,则写入一个零。你知道吗

以下是我所拥有的:

def Main():
    template = (('ham', '0905', 0), ('Wind', '852', 0), ('Wash', '3292', 0), ('Chitt', '3367', 0))
    yr = sql_fin('year')
    yr = db_query(yr)  # Yearly Data Returned Here
    print("YEAR: {} ".format(yr))
    if yr:
        pass
    else:
        yr = template

    if len(yr) < len(template):
        for each in yr:
            for part in template:
                if each[0] == part[0]:
                    pass
                else:
                    yr = yr + (part,)
    else:
        pass

    mnth = sql_fin('month')
    mnth = db_query(mnth)  # Monthly Data Returned Here
    print("MONTH: {} ".format(mnth))

    wk = sql_fin('week')
    wk = db_query(wk)  # Weekly Data Returned Here
    print("WEEK: {} ".format(wk))

    data = {(name, n): [y, 0, 0] for name, n, y in yr}

    print("DATA:".format(data))
    for name, n, m in mnth:
        data[name, n][1] = m

    for name, n, w in wk:
        data[name, n][2] = w

    data = tuple(tuple([*k, *v]) for k, v in data.items())

    print("DATA: {}".format(data))
    return data

我试图添加一个默认的模板,但我没有做得很好。现在其他的数字(每月和每周)都来了,但是所有的年度数据都归零了。你知道吗

我没看到什么??你知道吗

与模板相比,如果返回类似的内容:

(('ham', '0905', 3), ('Wind', '852', 4))

如何确保其他条目在不更改数据的情况下进入


Tags: 数据nameinformat内容fordbsql
1条回答
网友
1楼 · 发布于 2024-03-28 16:04:20

你可以用defaultdict来做

from collections import defaultdict

def Main():
    yr_dict = defaultdict(int)
    template = (('ham', '0905'), ('Wind', '852'), ('Wash', '3292'), ('Chitt', '3367'))

    yr = sql_fin('year')
    yr = db_query(yr)  # Yearly Data Returned Here
    print("YEAR: {} ".format(yr))

    for a, b, c in yr:
        yr_dict[a + ":" + b] = c

    yr = tuple((a, b, yr_dict[a + ":" + b]) for a, b in template)

    mnth = sql_fin('month')
    mnth = db_query(mnth)  # Monthly Data Returned Here
    print("MONTH: {} ".format(mnth))

    wk = sql_fin('week')
    wk = db_query(wk)  # Weekly Data Returned Here
    print("WEEK: {} ".format(wk))

    data = {(name, n): [y, 0, 0] for name, n, y in yr}

    print("DATA:".format(data))
    for name, n, m in mnth:
        data[name, n][1] = m

    for name, n, w in wk:
        data[name, n][2] = w

    data = tuple(tuple([*k, *v]) for k, v in data.items())

    print("DATA: {}".format(data))
    return data

相关问题 更多 >