gpt4 book ai didi

python - 使用 collections.OrderedDict 是不好的做法吗?

转载 作者:太空狗 更新时间:2023-10-29 22:31:02 26 4
gpt4 key购买 nike

我喜欢用 collections.OrderedDict有时当我需要一个关联数组时,应该保留键的顺序。最好的例子是解析或创建 csv 文件,其中在对象中隐式保留列的顺序很有用。

但我担心这是不好的做法,因为在我看来,关联数组的整个概念是键的顺序应该从不重要,并且任何操作依赖排序应该只使用列表,因为这就是存在列表的原因(这可以为上面的 csv 示例完成)。我没有这方面的数据,但我敢打赌,列表的性能普遍优于 OrderedDict。

所以我的问题是:OrderedDict 是否有任何真正引人注目的用例? csv 用例是应该在哪里使用它的好例子还是不好的例子?

最佳答案

But I'm worried that this is bad practice, since it seems to me that the whole concept of an associative array is that the order of the keys should never matter,

废话。那不是“关联数组的全部概念”。只是顺序很少重要,因此我们默认放弃顺序以获得概念上更简单(且更有效)的数据结构。

and that any operations which rely on ordering should just use lists because that's why lists exist

就此打住!想一想。 如何您会使用列表?作为具有唯一键的(键,值)对列表,对吧?好吧,恭喜,我的 friend ,你刚刚重新发明了 OrderedDict,只是使用了一个糟糕的 API,而且非常慢。对有序映射的任何概念上的异议也将适用于此特殊数据结构。幸运的是,这些反对意见都是无稽之谈。有序映射非常好,它们与无序映射不同。为它提供一个具有良好 API 和良好性能的恰当命名的专用实现可以改进人们的代码。

除此之外:列表只是一种有序的数据结构。虽然它们在某种程度上具有通用性,因为您几乎可以从列表的某种组合中获取所有数据结构(如果您向后弯腰),但这并不意味着您应该始终使用列表。

I don't have data on this, but I'm willing to bet that the performance for lists is universally better than OrderedDict.

数据(结构)没有(没有)性能。对数据(结构)的操作有。因此,这取决于您对哪些操作感兴趣。如果您只需要一个成对列表,那么列表显然是正确的,并且对其进行迭代或对其进行索引非常有效。但是,如果您想要一个也有序的映射,或者甚至是映射功能的一小部分(例如处理重复的键),那么单独的列表是非常糟糕的,正如我上面已经解释的那样。

关于python - 使用 collections.OrderedDict 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393502/

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