bur*_*007 20 python string duplicates
以下示例:
string1 = "calvin klein design dress calvin klein"
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除第二个一式两份"calvin",并"klein"?
结果应该是这样的
string2 = "calvin klein design dress"
Run Code Online (Sandbox Code Playgroud)
只应删除第二个重复项,并且不应更改单词的顺序!
Mar*_*kus 33
string1 = "calvin klein design dress calvin klein"
words = string1.split()
print (" ".join(sorted(set(words), key=words.index)))
Run Code Online (Sandbox Code Playgroud)
这会根据原始单词列表中的单词索引对字符串中所有(唯一)单词的集合进行排序.
spi*_*igo 19
def unique_list(l):
ulist = []
[ulist.append(x) for x in l if x not in ulist]
return ulist
a="calvin klein design dress calvin klein"
a=' '.join(unique_list(a.split()))
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 12
在Python 2.7+中,您可以使用collections.OrderedDict:
from collections import OrderedDict
s = "calvin klein design dress calvin klein"
print ' '.join(OrderedDict((w,w) for w in s.split()).keys())
Run Code Online (Sandbox Code Playgroud)
从itertools食谱中剪切和粘贴
from itertools import ifilterfalse
def unique_everseen(iterable, key=None):
"List unique elements, preserving order. Remember all elements ever seen."
# unique_everseen('AAAABBBCCDAABBB') --> A B C D
# unique_everseen('ABBCcAD', str.lower) --> A B C D
seen = set()
seen_add = seen.add
if key is None:
for element in ifilterfalse(seen.__contains__, iterable):
seen_add(element)
yield element
else:
for element in iterable:
k = key(element)
if k not in seen:
seen_add(k)
yield element
Run Code Online (Sandbox Code Playgroud)
我真的希望他们能够继续前进,尽快从这些食谱中制作一个模块.我非常希望能够在from itertools_recipes import unique_everseen每次需要时都能使用剪切和粘贴.
使用这样:
def unique_words(string, ignore_case=False):
key = None
if ignore_case:
key = str.lower
return " ".join(unique_everseen(string.split(), key=key))
string2 = unique_words(string1)
Run Code Online (Sandbox Code Playgroud)
string2 = ' '.join(set(string1.split()))
Run Code Online (Sandbox Code Playgroud)
解释:
.split()- 它是一种将字符串拆分为列表的方法(没有参数,它按空格拆分)
set()- 它是排除重复项的无序集合类型
'separator'.join(list)- 意味着您希望使用元素之间的“分隔符”将列表从参数连接到字符串
string = 'calvin klein design dress calvin klein'
def uniquify(string):
output = []
seen = set()
for word in string.split():
if word not in seen:
output.append(word)
seen.add(word)
return ' '.join(output)
print uniquify(string)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45470 次 |
| 最近记录: |