首页 > 解决方案 > 在 Python 中最有效地迭代大量字典列表

问题描述

我已经看到了一些类似问题的答案,但我不确定它们是否是解决我的问题的最佳方法。

我有一个非常大的表(100,000+ 行,20+ 列)作为字典列表处理。我需要使用比较对此列表进行部分重复数据删除。我在下面简化了我现在正在做的事情的一个例子。

table = [
    { "serial": "111", "time": 1000, "name": jon },
    { "serial": "222", "time": 0900, "name": sal },
    { "serial": "333", "time": 1100, "name": tim },
    { "serial": "444", "time": 1300, "name": ron },
    { "serial": "111", "time": 1300, "name": pam }
    ]

for row in table:
    for row2 in table:
        if row != row2:
            if row['serial'] == row2['serial']:
                if row['time'] > row2['time']:
                    action

这种方法确实有效(显然简化了,只是为那部分写了“动作”),但我的问题是是否有更有效的方法可以到达我想要的“行”,而不必对整个表进行两次迭代。我没有办法必然预测匹配行在列表中的位置,但在这种情况下,它们将列在相同的“序列”下。

我对 Python 比较陌生,效率是这里的目标。到目前为止,由于正在迭代的行数,它需要很长时间才能完成,我相信有一种更有效的方法可以做到这一点,我只是不知道从哪里开始。

谢谢你的帮助!

标签: pythonpython-2.7dictionary

解决方案


对于这么多数据,字典列表总是会相当慢。相反,请查看Pandas是否适合您的用例——它已经针对此类工作进行了优化。


推荐阅读