gpt4 book ai didi

python - 在 Python 3 中重新初始化字典的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:31 25 4
gpt4 key购买 nike

我的应用程序中有一个 bool 标志字典。当我处理一个数据集时,我使用数据中的字段键入字典,并标记我是否已经对它们执行了一次操作。现在,我正在使用正确的键初始化 False 值的字典,然后在对数据进行操作的循环开始时复制该字典。以下是将数据库记录分发到一组 .csv 文件的函数的代码片段:

do_once_defaults = dict.fromkeys([f for f in output_file_names], False)
for db in db_files:
do_once = dict(do_once_defaults)
for row in cur.execute(query, params):
if not do_once[row[0]]:
do_once[row[0]] = True
_replace_csv_headers(output_files[row[0]], [r[0] for r in cur.description])
_write_record_to_csv(row[1:])

是否有更好的方法在每次外部迭代时重置标志字典?一种更 Pythonic 的方式?

最佳答案

你最好根本不要使用字典。值只是 bool 值的字典实际上只是一个集合(除非您实际上区分了 True/False/notIncluded 这三个值,但您没有这样做)。

我想这就是你想要的:

for db in db_files:
done = set()
for row in cur.execute(query, params):
if row[0] not in done:
done.add(row[0])
_replace_csv_headers(output_files[row[0]], [r[0] for r in cur.description])
_write_record_to_csv(row[1:])

((编辑:这是关于现在修复的 do_once = do_once_defaults)顺便说一句,你没有复制字典。你的do_once 只是对 do_once_defaults 引用的同一个 dict 对象的另一个引用。所以你在那里重置标志。最简单的方法实际上make a copy 将是 do_once = dict(do_once_defaults),但我真的认为你应该按照上面的建议使用该集合。)

关于python - 在 Python 3 中重新初始化字典的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41861421/

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