为什么我不能将我的列表(应用了一些函数)转换为python中的set

2024-10-03 17:22:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,其中存储了一些元素。我想对列表的所有元素应用ssome函数,并想将列表按相反顺序排序。然后我想将结果列表转换为set()。但我的代码似乎不起作用。谁能看看我的代码有什么问题吗。最后一行是打印a的输出。这个代码有什么问题

B=[2,3,4,5,7,66,56,34,22,345, 22,3,5]
a=set(sorted([2*t for t in B], reverse=True))
print(a)
# output: {132, 68, 6, 4, 8, 10, 44, 14, 112, 690}

现在以另一种形式,我的代码是:

sorted(set([2*t for t in B]), reverse=True)

这似乎很好,并产生:

[690, 132, 112, 68, 44, 14, 10, 8, 6, 4]

有人能分辨出区别吗


Tags: 函数代码intrue元素列表foroutput
1条回答
网友
1楼 · 发布于 2024-10-03 17:22:27

Set对象不保留顺序,因为它们使用哈希表来保留其项。相反,您可以使用OrderedDict.fromkeys来获得iterable的唯一有序表示

In [6]: sorted_b = sorted([2*t for t in B], reverse=True)

In [7]: from collections import OrderedDict

In [8]: OrderedDict.fromkeys(sorted_b)
Out[8]: 
OrderedDict([(690, None),
             (132, None),
             (112, None),
             (68, None),
             (44, None),
             (14, None),
             (10, None),
             (8, None),
             (6, None),
             (4, None)])

相关问题 更多 >