GVKun编程网logo

在Python中从列表列表中删除重复项(在python中从列表列表中删除重复项的方法)

8

在本文中,我们将带你了解在Python中从列表列表中删除重复项在这篇文章中,我们将为您详细介绍在Python中从列表列表中删除重复项的方方面面,并解答在python中从列表列表中删除重复项的方法常见的

在本文中,我们将带你了解在Python中从列表列表中删除重复项在这篇文章中,我们将为您详细介绍在Python中从列表列表中删除重复项的方方面面,并解答在python中从列表列表中删除重复项的方法常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的c# – 根据多个字段或列从列表中删除重复项、Java 如何从列表中删除重复项?、python – 在带有元组的列表列表中查找重复项、python – 根据值之一从元组列表中删除重复项

本文目录一览:

在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# – 根据多个字段或列从列表中删除重复项

c# – 根据多个字段或列从列表中删除重复项

我有一个MyClass类型的列表
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.

解决方法

这将返回每个“类型”的一个项目(如一个区别)(所以如果你有A,A,B,C它将返回A,C)
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 如何从列表中删除重复项?

如何解决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 – 在带有元组的列表列表中查找重复项

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 – 根据值之一从元组列表中删除重复项

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.')]

看看最后两个.

解决方法

您可以使用itertools.groupby,因为您已经对这些值进行了排序.这是数据:

>>> 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 – 根据值之一从元组列表中删除重复项的相关信息,请在本站寻找。

本文标签: