您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-将列表转换为集合会更改元素顺序

Python-将列表转换为集合会更改元素顺序

set是无序的数据结构。

不要使用set,而是collections.OrderedDict

>>> a = collections.OrderedDict.fromkeys([1, 2, 20, 6, 210])
>>> b = collections.OrderedDict.fromkeys([6, 20, 1])
>>> collections.OrderedDict.fromkeys(x for x in a if x not in b)
OrderedDict([(2, None), (210, None)])

请注意,的顺序b无关紧要,因此它可以是可迭代的,但是应该是支持O(1)成员资格测试的可迭代。

编辑:上面的答案假定你希望能够对所有出现的集合执行(有序)设置操作,尤其是对先前设置操作的结果也是如此。如果没有必要,你可以简单地为某些集合使用列表,为其他集合使用集合,例如

>>> a = [1, 2, 20, 6, 210]
>>> b = set([6, 20, 1])
>>> [x for x in a if x not in b]
[2, 210]

这失去了的顺序b,并不允许进行快速的成员资格测试a和结果。集允许快速成员资格测试,并且列表保持顺序。如果你需要在同一集合上同时使用这两项功能,请使用collections.OrderedDict

python 2022/1/1 18:24:54 有420人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶