这实际上是这个问题的延伸.删除重复项后,该问题的答案没有保留列表的"顺序".如何在列表中删除这些重复项(python)
biglist =
[
{'title':'U2 Band','link':'u2.com'},
{'title':'Live Concert by U2','link':'u2.com'},
{'title':'ABC Station','link':'abc.com'}
]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,应该删除第二个元素,因为先前的"u2.com"元素已经存在.但是,应该保留订单.
ega*_*fni 32
使用set(),然后使用原始列表的索引重新排序.
>>> mylist = ['c','a','a','b','a','b','c']
>>> sorted(set(mylist), key=lambda x: mylist.index(x))
['c', 'a', 'b']
Run Code Online (Sandbox Code Playgroud)
Ale*_*lli 25
我对你完全忽略的另一个问题的答案,表明你声称这是错误的
这个问题的答案没有保持"秩序"
对于一个非常大的列表,如果你想保留剩余物品的确切顺序,可能是最快的方法,如下......:
biglist = [
{'title':'U2 Band','link':'u2.com'},
{'title':'ABC Station','link':'abc.com'},
{'title':'Live Concert by U2','link':'u2.com'}
]
known_links = set()
newlist = []
for d in biglist:
link = d['link']
if link in known_links: continue
newlist.append(d)
known_links.add(link)
biglist[:] = newlist
Run Code Online (Sandbox Code Playgroud)
发电机很棒.
def unique( seq ):
seen = set()
for item in seq:
if item not in seen:
seen.add( item )
yield item
biglist[:] = unique( biglist )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18605 次 |
| 最近记录: |