为什么Python的集合(sets)不保留插入顺序?

19 浏览
0 Comments

为什么Python的集合(sets)不保留插入顺序?

最近我发现一个令人惊讶的事实:在Python 3.7及以上版本中,字典保证保持插入顺序,而集合则不保证:

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> d
{'a': 1, 'b': 2, 'c': 3}
>>> d['d'] = 4
>>> d
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

>>> s = {'a', 'b', 'c'}
>>> s
{'b', 'a', 'c'}
>>> s.add('d')
>>> s
{'d', 'b', 'a', 'c'}

为什么会有这种差异?这个差异的背后有什么理由?Python团队是否没有将同样的效率改进应用于集合呢?

我并不是在寻找有序集合实现的指示或者使用字典代替集合的方法。我只是想知道为什么Python团队在同一时间没有使内置集合也保持顺序。

0