Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Dict相对于OrderedDict的优势_Python_Dictionary - Fatal编程技术网

Python Dict相对于OrderedDict的优势

Python Dict相对于OrderedDict的优势,python,dictionary,Python,Dictionary,我觉得Python字典不按插入顺序存储键很烦人。最近,我开始使用OrderedDict,它使用起来更方便,因为它克服了这个缺点(例如,在CSV文件的列上迭代,其中列顺序应该与字典的键顺序匹配) 这就是说,词典与有序词典相比有什么明显的优势吗?如果是,它们是什么?字典是一种更简单的数据结构,占用更少的空间,速度更快。它只需要维护一个哈希表,而OrderedDict同时维护一个哈希表和一个链表 如果您不关心键的顺序,请使用更简单的选项 同样不可忽视的是,dicts在语言层面上得到了支持。键入{k1:

我觉得Python字典不按插入顺序存储键很烦人。最近,我开始使用OrderedDict,它使用起来更方便,因为它克服了这个缺点(例如,在CSV文件的列上迭代,其中列顺序应该与字典的键顺序匹配)


这就是说,词典与有序词典相比有什么明显的优势吗?如果是,它们是什么?

字典是一种更简单的数据结构,占用更少的空间,速度更快。它只需要维护一个哈希表,而
OrderedDict
同时维护一个哈希表和一个链表

如果您不关心键的顺序,请使用更简单的选项


同样不可忽视的是,dicts在语言层面上得到了支持。键入
{k1:v1,k2:v2}
很容易。这是dicts的又一次胜利。也许这是不公平的,但你看吧。

我不喜欢
OrderDict
s的字符串表示形式,因此经常将它们转换为常规
dict
s以便于显示。还必须有一些额外的开销来维护订单,这就是该功能的准入价格(坦白说,我从来没有注意到)。请注意,在python 3.5中,
OrderedDict
将是一个内置类型,并将用于某些事情(例如,
**kwargs
)。关于(容器)有一个一般规则类-不仅仅是Python:更多特性=>更多开销,更多内存=>更慢。当然,所有可比较的容器类型。这取决于你需要什么以及你可以/想要接受多少退税。就像在现实生活中一样:没有什么是免费的。