在本文中,我们将带你了解在Python中从列表列表中删除重复项在这篇文章中,我们将为您详细介绍在Python中从列表列表中删除重复项的方方面面,并解答在python中从列表列表中删除重复项的方法常见的
在本文中,我们将带你了解在Python中从列表列表中删除重复项在这篇文章中,我们将为您详细介绍在Python中从列表列表中删除重复项的方方面面,并解答在python中从列表列表中删除重复项的方法常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的c# – 根据多个字段或列从列表中删除重复项、Java 如何从列表中删除重复项?、python – 在带有元组的列表列表中查找重复项、python – 根据值之一从元组列表中删除重复项。
本文目录一览:- 在Python中从列表列表中删除重复项(在python中从列表列表中删除重复项的方法)
- c# – 根据多个字段或列从列表中删除重复项
- Java 如何从列表中删除重复项?
- python – 在带有元组的列表列表中查找重复项
- python – 根据值之一从元组列表中删除重复项
在Python中从列表列表中删除重复项(在python中从列表列表中删除重复项的方法)
如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项?
主列表如下所示:
L = [[''14'', ''65'', 76], [''2'', ''5'', 6], [''7'', ''12'', 33], [''14'', ''22'', 46]]
如果[k][0]
已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果:
L = [[''14'', ''65'', 76], [''2'', ''5'', 6], [''7'', ''12'', 33]]
您可以建议一种算法来实现此目标吗?
答案1
小编典典您是否关心保留订单/删除了哪些重复项?如果不是,则:
dict((x[0], x) for x in L).values()
会做的。如果您想保留订单并想保留第一个订单,则:
def unique_items(L): found = set() for item in L: if item[0] not in found: yield item found.add(item[0])print list(unique_items(L))
c# – 根据多个字段或列从列表中删除重复项
public class MyClass { public string prop1 {} public int prop2 {} public string prop3 {} public int prop4 {} public string prop5 {} public string prop6 {} .... }
此列表将具有重复项.我想查找和删除此列表中prop1,prop2和prop3重复的项目.如果其他属性是重复的则无关紧要
这是我尝试过的不起作用.
List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3} ).Where(g => g.Count() > 1).Select(g=> g.Key);
我不想使用任何第三方工具.只有纯粹的linq.
解决方法
List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop3} ) .Select(d => d.First()) .ToList();
如果你只想要没有副本的元素(所以如果你有A,C它将返回B,C):
List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop3} ) .Where(d => d.Count() == 1) .Select(d => d.First()) .ToList();
Java 如何从列表中删除重复项?
如何解决Java 如何从列表中删除重复项??
如果该代码不起作用,则可能是你未equals(Object)
在Customer
该类上正确实现。
大概有一些钥匙(我们称之为customerId
)可以唯一地标识一个客户。例如
class Customer {
private String customerId;
...
的适当定义equals(Object)如下所示:
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Customer)) {
return false;
}
Customer other = (Customer) obj;
return this.customerId.equals(other.customerId);
}
为了完整起见,你还应该实现hashCode两个Customer相等的对象将返回相同的哈希值。hashCode上述定义的匹配项为equals:
public int hashCode() {
return customerId.hashCode();
}
还值得注意的是,如果列表很大,这不是删除重复项的有效方法。(对于具有N个客户的列表,N*(N-1)/2在最坏的情况下,即没有重复项时,你将需要进行比较。)对于更有效的解决方案,你应使用诸如a之类的方法HashSet来进行重复项检查。
解决方法
我想从列表中删除重复项,但我无法正常工作:
List<Customer> listCustomer = new ArrayList<Customer>();
for (Customer customer: tmpListCustomer)
{
if (!listCustomer.contains(customer))
{
listCustomer.add(customer);
}
}
python – 在带有元组的列表列表中查找重复项
pairsList = [ [1,(11,12),(13,14)],#list1 [2,(21,22),(23,24)],#list2 [3,(31,32),#list3 [4,(43,44),22)],#list4 ]
每个列表中的第一个元素唯一标识每个列表.
从这个对象pairList,我想找出哪些列表具有相同的元组.所以我想报告list1与list3具有相同的元组(因为它们都有(13,14).同样,list2和list4具有相同的元组(都有(21,22))并且需要报告.列表中的元组无关紧要(list2和list4都有(13,14),即使元组中列表中的位置不同).
输出结果可以是稍后可迭代的任何内容,例如(1,3),(2,4)或[1,3],[2,4].这是我感兴趣的对.
我知道集合,并在其他情况下使用它们删除列表中的重复项,但无法理解如何解决此问题.如果一个列表包含其他列表中的任何元素,我可以像这样检查:
list1 = [1,14)] list2 = [3,14)] print not set(list1).isdisjoint(list2) >>>True
因此,下面的代码让我知道哪些列表与第一个列表具有相同的元组.但是在所有列表上执行此操作的正确方法是什么?
counter = 0 for pair in pairsList: list0 = pairsList[0] iterList = pairsList[counter] if not set(list0).isdisjoint(iterList): print iterList[0] #print list ID counter += 1
解决方法
好的,然后让我们先把它转换为dict:
d = {x[0]: x[1:] for x in pairsList} # d: {1: [(11,2: [(21,3: [(31,4: [(43,22)]}
让我们索引整个数据结构:
index = {} for k,vv in d.iteritems(): for v in vv: index.setdefault(v,[]).append(k)
现在索引是:
{(11,12): [1],14): [1,22): [2,4],24): [2],32): [3],44): [4]}
输出结果可以是稍后可迭代的任何内容,4].这是我感兴趣的对.
pairs = [v for v in index.itervalues() if len(v) == 2]
返回[[1,4]].
python – 根据值之一从元组列表中删除重复项
列表按浮点顺序排序.我想保留订单.
[(0.10507038451969995,'Deadly stampede in Shanghai - Emergency personnel help victims.'),(0.078586381821416265,'Deadly stampede in Shanghai - Police and medical staff help injured people after the stampede.'),(0.072031446647399661,'- Emergency personnel help victims.'),'Emergency personnel help victims.')]
看看最后两个.
解决方法
>>> lot [(0.10507038451969995,(0.07858638182141627,(0.07203144664739966,'Emergency personnel help victims.')]
示范:
>>> import itertools >>> [next(t) for _,t in itertools.groupby(lot,lambda x: x[0])] [(0.10507038451969995,'- Emergency personnel help victims.')]
这将为您提供组合在一起的第一个值.
关于在Python中从列表列表中删除重复项和在python中从列表列表中删除重复项的方法的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于c# – 根据多个字段或列从列表中删除重复项、Java 如何从列表中删除重复项?、python – 在带有元组的列表列表中查找重复项、python – 根据值之一从元组列表中删除重复项的相关信息,请在本站寻找。
本文标签: