【问题标题】:Deleting repeated strings in a list Python [duplicate]删除列表Python中的重复字符串[重复]
【发布时间】:2021-09-10 06:35:04
【问题描述】:

如何编写删除任何重复字符串的函数。在列表dates 中,字符串'2017-11-01 00:00:00','2018-12-01 00:00:00' 已重复两次或更多次。我想让它达到Expected Output 的程度,并且每个字符串只有一种情况。

dates = ['2017-09-01 00:00:00', '2017-10-01 00:00:00', '2017-11-01 00:00:00', '2017-11-01 00:00:00', '2017-11-01 00:00:00', '2017-12-01 00:00:00', '2018-01-01 00:00:00', '2018-02-01 00:00:00', '2018-03-01 00:00:00', '2018-04-01 00:00:00', '2018-05-01 00:00:00', '2018-06-01 00:00:00', '2018-07-01 00:00:00', '2018-08-01 00:00:00', '2018-09-01 00:00:00', '2018-10-01 00:00:00', '2018-11-01 00:00:00', '2018-12-01 00:00:00', '2018-12-01 00:00:00', '2019-01-01 00:00:00']

预期输出:

['2017-09-01 00:00:00', '2017-10-01 00:00:00', '2017-11-01 00:00:00', '2017-12-01 00:00:00', '2018-01-01 00:00:00', '2018-02-01 00:00:00', '2018-03-01 00:00:00', '2018-04-01 00:00:00', '2018-05-01 00:00:00', '2018-06-01 00:00:00', '2018-07-01 00:00:00', '2018-08-01 00:00:00', '2018-09-01 00:00:00', '2018-10-01 00:00:00', '2018-11-01 00:00:00', '2018-12-01 00:00:00', '2019-01-01 00:00:00']

【问题讨论】:

  • list(dict.fromkeys(dates))?
  • @MichaelSzczesny smart ;) 你应该提出作为答案!

标签: python python-3.x string list date


【解决方案1】:

假设您想过滤掉连续重复,您可以使用列表推导:

[dates[0]]+[dates[i] for i in range(1, len(dates)) if dates[i-1]!=dates[i]]

itertools.groupby:

from itertools import groupby
[list(g)[0] for i,g in groupby(dates)]

输出:

['2017-09-01 00:00:00', '2017-10-01 00:00:00', '2017-11-01 00:00:00',
 '2017-12-01 00:00:00', '2018-01-01 00:00:00', '2018-02-01 00:00:00',
 '2018-03-01 00:00:00', '2018-04-01 00:00:00', '2018-05-01 00:00:00',
 '2018-06-01 00:00:00', '2018-07-01 00:00:00', '2018-08-01 00:00:00',
 '2018-09-01 00:00:00', '2018-10-01 00:00:00', '2018-11-01 00:00:00',
 '2018-12-01 00:00:00', '2019-01-01 00:00:00']

【讨论】:

  • 谢谢它的工作,有没有办法我可以用integers而不是strings来做到这一点。我用[2,2,3,4,5,6,7] 之类的列表编号尝试了[int(g)[0] for i,g in groupby(month_changes)],它给了我这个错误消息TypeError: int() argument must be a string, a bytes-like object or a number, not 'itertools._grouper'
  • 它应该适用于整数,只需使用完全相同的代码。 list 在这里扩展组生成器。
猜你喜欢
  • 2014-09-16
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多