如何在Python中不规则嵌套的对象列表中查找唯一元素

2024-05-29 07:58:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在嵌套的对象列表中找到“最高级别”的唯一元素,包括数据帧和列表。这意味着在第一个嵌套级别删除匹配项,而不是递归删除。实际上,这相当于一个Set函数,其中列表中的元素可以是任何东西,可以是散列的,也可以是非散列的

例如,我有以下列表:

    oreka = [
     [['Name', 'INSERT_3'],
      ['Product', ['Aegon', ' ', 'Level Life Cover']],
      ,
     [['Name', 'INSERT_3'],
      ['Product', ['Aegon', ' ', 'Level Life Cover']],
      ],
     [['Name', 'INSERT_3'],
      ['Product', ['Aegon', ' ', 'Level Life Cover']],
      ,
     [['Name', 'INSERT_4'],
      ['Product', ['Aegon', ' ', 'Level Life Cover']],
      ],
     .....]

我想找到一个独特的“元素”列表,在本例中是一个嵌套列表,对于每个元素中的嵌套数量,或者它们是数字还是字符串等,我没有标准布局。重复不遵循逻辑,我的上述输出是:

    Unique = 
    [
     [['Name', 'INSERT_3'],
      ['Product', ['Aegon', ' ', 'Level Life Cover']],
      ,
     [['Name', 'INSERT_4'],
      ['Product', ['Aegon', ' ', 'Level Life Cover']],
      ],
     .....]

我尝试了this post中提出的解决方案,该解决方案建议删除列表中的重复数据帧,但这取决于顺序性质或重复的每个其他元素,并且不起作用:

Unique = [all_df_list[x] for x, _ in enumerate(all_df_list) if all_df_list[x].equals(all_df_list[x-1]) is False]

作为最后一次尝试,我尝试将列表与自身的副本进行比较,创建一个矩阵,其中索引列表中重复的元素被引用为2,唯一的元素被引用为1,这会陷入循环:

dali = []
eureka = oreka.copy()

for i in range(0,len(eureka)):
    salvator = []
    for j in range(0,len(oreka)):
        picasso=[]
        monet = 1
        if eureka[i]!=oreka[j]:
            picasso.append(monet)
        if eureka[i]==oreka[j]:
            picasso.append(monet+1)
        salvator.append(picasso)
    dali.append(salvator)

如果嵌套列表中的项目是不规则的,是否有任何常规(非对象特定的)方法来检查嵌套列表?类似于Set的东西,它不要求第一个嵌套中的元素不是列表或其他对象


Tags: name元素df列表coverallproductlevel

热门问题