gpt4 book ai didi

python - 在python 3中打印set容器时,它打印时没有顺序

转载 作者:行者123 更新时间:2023-11-30 22:06:06 24 4
gpt4 key购买 nike

我只是想学习Python中的集合容器。因此,我使用以下方法创建了一个正常集:

dset = set(['a','c','z','d'])

但是当我打印它时,结果是:

{'c', 'a', 'z', 'd'}

不应该是:

{'a', 'c', 'z', 'd'}

谁能解释一下为什么输出是这样的?设置数据类型是否有默认的排序机制?还是我的数学很弱?

最佳答案

集合不是有序的,它们不是有序的容器,所以你无能为力,

如果您有一个列表并且想要使用 set,则以有序方式转换回列表:

print(sorted(set(l),key=l.index)) 

所以没有机会制作有序集

顺便说一句,有一个有序的集合...😤

link to download file, or just copy the code in a module and import it, remember to remove the if __name__ == '__main__' part in the bottom

或者pip install Bolton,然后:

from boltons.setutils import IndexedSet

然后是例子:

>>> from boltons.setutils import IndexedSet
>>> x = IndexedSet(list(range(4)) + list(range(8)))
>>> x
IndexedSet([0, 1, 2, 3, 4, 5, 6, 7])
>>> x - set(range(2))
IndexedSet([2, 3, 4, 5, 6, 7])
>>> x[-1]
7
>>> fcr = IndexedSet('freecreditreport.com')
>>> ''.join(fcr[:fcr.index('.')])
'frecditpo'

参见link

或者pip安装sortedcontainers:

安装后,您可以简单地:

from sortedcontainers import SortedSet
help(SortedSet)

或者安装collections_extend

然后是例子:

>>> from collections_extended import setlist
>>> sl = setlist('abracadabra')
>>> sl
setlist(('a', 'b', 'r', 'c', 'd'))
>>> sl[3]
'c'
>>> sl[-1]
'd'
>>> 'r' in sl # testing for inclusion is fast
True
>>> sl.index('d') # so is finding the index of an element
4
>>> sl.insert(1, 'd') # inserting an element already in raises a ValueError
ValueError
>>> sl.index('d')
4

参见link

关于python - 在python 3中打印set容器时,它打印时没有顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52829775/

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