【问题标题】:Best way to remove duplicate characters (words) in a string?删除字符串中重复字符(单词)的最佳方法?
【发布时间】:2010-10-12 19:49:51
【问题描述】:

删除字符串中任何重复字符和由空格分隔的字符集的最佳方法是什么?

我认为这个例子解释得更好:

foo = 'h k k h2 h'

应该变成:

foo = 'h k h2' # order not important

其他例子:

foo = 's s k'

变成:

foo = 's k'

【问题讨论】:

    标签: python string duplicates


    【解决方案1】:
    ' '.join(set(foo.split()))
    

    请注意,默认情况下 split() 将拆分所有空白字符。 (例如制表符、换行符、空格)

    因此,如果您只想在空间上拆分,则必须使用:

    ' '.join(set(foo.split(' ')))
    

    【讨论】:

    • ' '.join(set(foo.split())) 这些天更加pythonic。此外,您缺少右括号。
    【解决方案2】:

    你的意思是?

    ' '.join( set( someString.split() ) )
    

    这是唯一的以空格分隔的单词,没有特定的顺序。

    【讨论】:

    • 然后 ' '.join(set(someString.split())) 将其重新组合在一起
    • @Ali A:编码 30 年。比 PEP 8 早 20 多年。不能教一个老屁新 trix。
    • 非常感谢!与我所拥有的完全不同。
    • @Amything:当您不发布代码时,我们很难为新概念提供帮助。
    • S.Lott:天哪,你听起来比我还老!
    【解决方案3】:
    out = []
    for word in input.split():
        if not word in out:
            out.append(word)
    output_string = " ".join(out)
    

    比使用集合更长,但它保持顺序。

    编辑:没关系。我错过了关于订单不重要的问题。使用一套更好。

    【讨论】:

    • +1,当订单很重要时,您的解决方案很好。你能提供更好的版本来优化搜索吗?
    猜你喜欢
    • 2013-09-18
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多