如何在Python中有效地循环三个不同的数据集合?

2024-06-26 00:20:08 发布

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

完成以下任务的最佳/最快方法是什么:我有一个大文件需要更新。我不会把它记在记忆里,而是像这样一行一行地读。你知道吗

with open(self.f, "rb") as f_in:
        for line in f_in:
            l = line.strip().split(',')

对于每一行,可能有两种不同的更新方案。也就是说,两个包含更新信息的大列表/元组。对于每一行,我必须检查,比如说l[0],是否满足列表1中的条件,如果不满足,则检查列表2中的另一个条件。我想知道在这里什么是明智的,因为我可能会遇到性能问题。我的第一个想法是从列表/元组中删除匹配的项,这样列表在运行时会越来越小。你知道吗


Tags: 文件方法inself列表foraswith
1条回答
网友
1楼 · 发布于 2024-06-26 00:20:08

要根据一系列值测试成员资格,请使用set而不是列表。你知道吗

与字典查找一样,集合成员资格测试也是O(1)操作。价格便宜,与电视机的大小无关。你知道吗

set_one = {'some_value', 'some_other_value', ...}

# ...
if l[0] in set_one:
    # do something.

如果需要映射值,请使用字典:

dict_one = {'some_value': 'item1', 'some_other_value': 'item2', ...}

# ...
if l[0] in dict_one:
    item = dict_one[l[0]]

这完全取决于您正试图执行的查找类型;使用正确的数据结构可以使许多不同类型的查找非常有效。在一个文件中的每一行的大列表上循环通常是而不是最好的选择。你知道吗

相关问题 更多 >