【问题标题】:Python : Comprehensions [duplicate]Python:理解[重复]
【发布时间】:2021-10-28 06:13:37
【问题描述】:

我有一个清单:

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 数据结构无序
  • 顺便说一句,这是一个非常低效的算法。不要使用set,使用集合Counter,类似[k for k,v in Counter(data) if v > 1]

标签: python python-3.x list-comprehension


【解决方案1】:

set 不保证订单,dict 可以。

>> duplicates = dict.fromkeys([x for x in lis if lis.count(x) > 1], None)

>> duplicates = list(duplicates); duplicates
['d', 'e']

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 2021-04-20
      • 2021-10-06
      相关资源
      最近更新 更多