gpt4 book ai didi

python - 将下划线与命名元组一起使用

转载 作者:行者123 更新时间:2023-12-01 08:24:28 26 4
gpt4 key购买 nike

我正在用 Python 构建一个 SQL 模拟器并存储行,我想使用命名元组,因为我可以使用 select、order by 和 where 轻松处理复杂的查询。我从普通元组开始,但我经常发现自己在寻找行的属性并需要维护列的顺序,所以我到达了命名元组。

问题是我的一些列名称有前导下划线,这导致我最终得到 ValueError: Field name can start with an underscore: '_col2'

我正在寻找一种使用带有下划线的命名元组(可能是某种类型的覆盖)的方法,或者一个合适的替代容器,它允许我轻松地转换为原始列顺序的值元组或通过它们访问各个值字段名称。

我考虑过向每个元组附加一个前导字符串,然后编写一个中间件函数来充当 getattr 函数,但首先删除前导字符串 - 但这看起来令人难以置信。

最佳答案

您可以使用rename=True参数避免ValueError

from collections import namedtuple

a = namedtuple("Table", "_col1 _col2 _col3 col4", rename=True)

print(a._fields)

('_0', '_1', '_2', 'col4')

@Edit1您可能想要跟踪哪些字段已更改

from collections import namedtuple

columns = "_col1 _col2 _col3 col4"
a = namedtuple("Table", columns, rename=True)

old_feilds = columns.split()
new_feilds = a._fields

mapper = {}

for f1,f2 in zip(old_feilds, new_feilds):
mapper[f1] = f2

print(mapper)

{'_col3': '_2', '_col1': '_0', 'col4': 'col4', '_col2': '_1'}

关于python - 将下划线与命名元组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com