我正在写一个服务,其中性能是必不可少的,我不知道什么是最快的事情。我有几个对象(50-200),每个对象都有一个ID(整数,例如84397或23845)。有一个字典,一个KeyValue对的列表或者一个List的索引设置为ID,其余索引为空或者数组有相同想法会更快吗?字典,列表或数组?
回答
这取决于您要执行的操作。假设您想要找到给定ID为的对象。
- 的巨大阵列方法是最快的:访问
myArray[84397]
是一个固定时间操作O(1)。当然,这种方法需要最多的内存。 - 的字典几乎一样快,但需要较少的内存,因为它采用的是hash table内部。
- 对的列表方法是最慢的,因为您可能必须遍历整个列表才能找到您的条目,这会产生复杂性。
因此,在你的情况,我会选择字典,除非巨大的数组的稍微好一些的表现是在你的情况真的很重要。
感谢您的帮助,我会使用字典(假设边际意味着像1ms更快)。 – SBoss
你写了“字典需要更少的内存” - 你是不是要编写它需要更多的内存,因为它在内部使用哈希表? – BornToCode
@BornToCode:它比以前的选项,巨大的数组需要更少的内存。巨大的数组需要* maximumID *存储位置,而字典只需要* someConstant * numberOfElements *存储位置。 – Heinzi
Dictionary versus List Lookup time
此外,对于不同的收藏更详细的解释,请this question。
你也可以使用哈希表。字典内部使用它。 但字典有一个优点,它是一种GENERIC类型,它可以为您提供类型安全性。
这里是不同的线程 Dictionary Vs HashTable 我希望它可以帮助你决定。
Praveen
- 1. 字典或列表
- 2. 字典或数组
- 3. Python:接收字典或字典列表
- 4. 接受单字典或字典列表作为函数参数
- 5. Python:将元素添加到字典列表或关联数组
- 6. 数组,列表或字典3个层次类
- 7. 会话中的数组,字典或列表?
- 8. 如何才能真正复制字典或列表数组?
- 9. 将字典表示为字典或列表
- 10. 从字符串返回字典值作为元组或列表
- 11. 词典键(C#)字典组列表字典
- 12. python字典 - 列表字典
- 13. 从字典列表字典
- 14. 返回字典或数组函数?
- 15. 如何将csv文件转换为列表或字典或数组?
- 16. 反应:如何获得列表中的字典数组列表
- 17. 发现更深的字典或列表
- 18. 转换web.py iterbetter到字典或列表
- 19. 具有字典或列表蟒蛇
- 20. 从字典中提取类似数据并放入新列表或数组
- 21. 两个关键元组的列表或字典
- 22. 将列表字典转换为元组字典
- 23. 如何将列表元组和字典加入字典?
- 24. Python列表,元组和字典到JSON?
- 25. 创建从字典元组从列表
- 26. Python,在字典中组合列表
- 27. 元组或多元字典?
- 28. 列表的字典
- 29. unpickle字典列表
- 30. Python:提取字典中的数据列表numpy数组
您是否尝试过运行简单的测试应用程序? –
我已经开始了,但我认为要求会更有效率(对于未来的求职者和我)。 – SBoss
你必须对这些对象进行哪些操作?按键搜索?搜索值?许多插入?删除密钥? – Marco