【问题标题】:Python: Unique items of list in the order that it appearsPython:列表的唯一项按其出现的顺序排列
【发布时间】:2016-09-28 18:50:04
【问题描述】:

在 Python 中,我们可以使用set(list) 获取列表的唯一项。但是,这样做会破坏值出现在原始列表中的顺序。有没有一种优雅的方法可以按照列表中出现的顺序获取唯一项目。

【问题讨论】:

  • 如果numpy 有效,则有several questions out there。否则“稳定唯一”可能是关键字。
  • @AndrasDeak 谢谢。是的,我目前只有整数数据类型,您指出的结果应该可以工作。
  • 不用说,别叫list;)

标签: python list set unique


【解决方案1】:

这是一种优雅的方式:

from collections import OrderedDict
list(OrderedDict.fromkeys(list))

如果列表项都是可散列的(如果将其转换为集合没有触发异常,您将知道所有列表项都是可散列的)。

如果任何项目不可散列,则有一个替代方案更强大,但性能较差:我建议您参考 Patrick Haugh 的 answer

【讨论】:

  • 请注意,您的不可散列更新已经存在于之前的答案中,因此在此答案中有点多余。
【解决方案2】:
l = []
for item in list_:
    if item not in l:
        l.append(item)

对于真正庞大、多样化的list_,这会变得很慢。在这些情况下,跟踪一组可见值是值得的。

【讨论】:

    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多