Python - удаление дубликатов из строки - PullRequest
0 голосов
/ 19 мая 2010
def remove_duplicates(strng):
    """
    Returns a string which is the same as the argument except only the
    first occurrence of each letter is present.  Upper and lower case
    letters are treated as different.  Only duplicate letters are removed,
    other characters such as spaces or numbers are not changed. 

    >>> remove_duplicates('apple')
    'aple'
    >>> remove_duplicates('Mississippi')
    'Misp'
    >>> remove_duplicates('The quick brown fox jumps over the lazy dog')
    'The quick brown fx jmps v t lazy dg'
    >>> remove_duplicates('121 balloons 2 u')
    '121 balons 2 u'
    """
    s = strng.split()
    return strng.replace(s[0],"")

Написание функции, позволяющей избавиться от дубликатов букв, но до сих пор играл в течение часа и ничего не могу получить. Помощь будет оценена, спасибо.

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Не самый эффективный, но самый простой способ:

>>> s = 'The quick brown fox jumps over the lazy dog'
>>> import string
>>> n = ''
>>> for i in s:
        if i not in string.ascii_letters:
            n += i
        elif i not in n:
            n += i


>>> n
'The quick brown fx jmps v t lazy dg'
2 голосов
/ 20 мая 2010

Использование списка понимания:

>>> from string import whitespace, digits
>>> s = 'The quick brown fox jumps over the lazy dog'
>>> ''.join([c for i, c in enumerate(s) if c in whitespace+digits \
                                                      or not c in s[:i]])
0 голосов
/ 19 мая 2010

попробуйте это ...

def remove_duplicates(s):
    result = ""
    dic = {}
    for i in s:
        if i not in dic:
            result+=i
            if ord(i.lower()) >= ord('a') and ord(i.lower()) <= ord('z'):
                dic[i] = 1
    return result
...