将列表转换为集合再转换回来,是否会在Python中产生问题?

5 投票
3 回答
6893 浏览
提问于 2025-04-15 19:47

我正在把一个列表转换成集合,像这样:

request.session['vote_set'] = set(request.session['vote_set'])

这样我就可以轻松地用 if x in set 来查找,并且去掉重复的项。然后,当我完成后,我再把它转换回来:

request.session['vote_set'] = list(request.session['vote_set'])

这样做有没有更好的方法?我这样做会不会有什么危险(或者说傻)?

3 个回答

0

这是关于如何去掉重复项并保持顺序的方法(如果你在意的话):算法 - 如何高效地删除列表中的重复元素?

其他的回答展示了如何把一个列表转换成一个集合。

1

如果顺序对你很重要的话,你会失去这个顺序。

5

如果你真的想保留重复的项,那你会失去它们。如果这实际上是一个“投票”的列表,就像你命名的那样,你可能会“丢失”一些哦 :)

那为什么不直接这样做呢:

if x in set(request.session['vote_set'])

如果你担心的话。

不过我在想,这样做会不会比直接这样做慢:

if x in request.session['vote_set']

而且,正如其他人提到的,排序可能会(很可能)丢失。

撰写回答