Python : Comprehensions



我有一个列表:

lis = ['a', 'b', 'c', 'd', 'd', 'e', 'e']

我正在尝试使用推导式来获取重复的值。

duplicates = set([x for x in lis if lis.count(x) > 1])

返回:

{‘d’,‘e’}

现在我从上面的集合中创建一个列表:

duplicates = list(set([x for x in lis if lis.count(x) > 1]))

我得到如下输出:

[' e ', ' d ']

为什么顺序改变?

set不保证订单,dict保证订单。

>> duplicates = dict.fromkeys([x for x in lis if lis.count(x) > 1], None)
>> duplicates = list(duplicates); duplicates
['d', 'e']

这是因为Set以随机的方式存储元素。尝试多次运行此代码并查看输出。

s = {"a","b","g","f"}
print(s)

最新更新