gpt4 book ai didi

列表的 Pythonic 操作

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:33 24 4
gpt4 key购买 nike

我正在执行以下任务。迭代列表列表。将每个内部列表转换为一个对象并将它们添加到一个批处理中以插入到 cassandra 中。跟踪批处理不超过 150 件。

s = session.prepare("INSERT INTO {} (a, b, c) VALUES (?, ?, ?)".format(table))
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
count = 0
for lst in list:
for i in lst:
if count == 150:
magic = Magic(i[0], i[1], content_id)
batch.add(s, (magic.a, magic.b, magic.c))
session.execute(batch)
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
count = 0
else:
for i in lst:
magic = Magic(i[0], i[1], content_id)
batch.add(s, (magic.a, magic.b, magic.c))
count += 1
session.execute(batch)

外部列表有未指定数量的项目,但内部列表总是有两个项目。

这段代码非常冗长。有没有更 pythonic 的方法来做到这一点。

最佳答案

我将通用代码移出了 if block :

s = session.prepare("INSERT INTO {} (a, b, c) VALUES (?, ?, ?)".format(table))
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
count = 0
for lst in list:
for i in lst:
magic = Magic(i[0], i[1], content_id)
batch.add(s, (magic.a, magic.b, magic.c))
count += 1
if count == 150:
session.execute(batch)
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
count = 0
session.execute(batch)

我还删除了看起来不必要的第二个 for 循环。您可能希望在最终调用 session.execute 之前添加对 count == 0 的检查。

警告

永远不要使用 list 作为变量名。 list是一个内置类。

关于列表的 Pythonic 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419357/

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