如何在列表中删除这些重复项(python)

TIM*_*MEX 1 python list

biglist = 

[ 

    {'title':'U2 Band','link':'u2.com'}, 
    {'title':'ABC Station','link':'abc.com'}, 
    {'title':'Live Concert by U2','link':'u2.com'} 

]
Run Code Online (Sandbox Code Playgroud)

我想删除列表中的THIRD元素...因为它有"u2.com"作为副本.我不想要重复的"链接"元素.执行此操作的最有效代码是什么,以便产生以下结果:

biglist = 

[ 

    {'title':'U2','link':'u2.com'}, 
    {'title':'ABC','link':'abc.com'}
]
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法,包括使用许多嵌套的"for ... in ...."但这种效率非常低且太长.

Ale*_*lli 8

对于一个非常大的列表,如果你想保留剩余物品的确切顺序,可能是最快的方法,如下......:

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)

  • @dbr,`barename = whatever`重新绑定`barename` - 但如果有任何其他引用存在于任何用于引用的`barename`,它们都是无效的.因此,在这种情况下,这将不会**"从列表中删除重复项",如所请求的:它将使_new_列表对象没有重复,但保留旧列表仍然充满欺骗(如果有任何其他当然,保持列表对象存活的引用).`somelist [:] = what`****完全**不同:**这个**语句正在改变列表对象本身的主体_ - 即**它是**"从_the_列表中删除重复"! (3认同)
  • 我喜欢这个,因为它是稳定的:返回的项目将与原始列表中显示的顺序相同.这在某些应用中很重要. (2认同)