Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表,删除重复项_Python_List - Fatal编程技术网

Python列表,删除重复项

Python列表,删除重复项,python,list,Python,List,正在尝试删除列表列表中的重复项,并打印相同项而不打印重复项 原始列表 a=['country'、['America_1'、'America_2'、'America_3'、'America_4'、'England_5'、'England_6']、['apple_1_more'、'orange_1_more']、['country'、['Brazil_2'、'Brazil_3'、'Brazil_1'、'Brazic_4'、'Mexico_1'、'Mexico_1'、'Mexico_3'、'Mexic

正在尝试删除列表列表中的重复项,并打印相同项而不打印重复项

原始列表

a=['country'、['America_1'、'America_2'、'America_3'、'America_4'、'England_5'、'England_6']、['apple_1_more'、'orange_1_more']、['country'、['Brazil_2'、'Brazil_3'、'Brazil_1'、'Brazic_4'、'Mexico_1'、'Mexico_1'、'Mexico_3'、'Mexico_1'、'Mexico_1'、'Mexico_3'、'Mexico_3'、'Mexico_2'、'Mexico_2'、'

寻找输出:

但是得到:

['country'、['America'、['England']、['orange\u more'、[apple\u more']、['country'、[America'、[England'、[Mexico'、[Brazic']、[orange\u more'、[grapes\u less'、[banana\u more'、[apple\u more']]、[code>

代码::

 a = [['country',['America_1','America_2','America_3','America_4','England_5','England_6'],['apple_1_more','orange_1_more']],['country',['Brazil_2','Brazil_3','Brazil_1','Brazil_4','Mexico_1','Mexico_3','Mexico_2'],['grapes_1_less','banana_1_more']]]
aa ={}
aaa=[]
aaaa=[]
aaaaa=[]
for i in a:
    for j in i[1]:
        j=j.split('_',1)[0]
        aaa.append(j)
    for k in i[2]:
        k=k.split('_',2)[0]+'_'+k.split('_',2)[2]
        aaaa.append(k)
    aa['country'] = [i[0],list(set(aaa)),list(set(aaaa))]
    aaaaa.append(aa['country'])
print (aaaaa)

使用列表理解,将每个子列表中的第二项转换为:

输出:

[['country', ['England', 'America']], ['country', ['Brazil', 'Mexico']]]

这可能不会保留内部列表的顺序,因为集合是无序的,因此您可能需要对此进行说明。

使用列表理解,将每个子列表中的第二项转换为:

输出:

[['country', ['England', 'America']], ['country', ['Brazil', 'Mexico']]]

这可能不会保留内部列表的顺序,因为集合是无序的,因此您可能需要对此进行说明。

您可以尝试以下方法:

a = [['country',['America','America','America','America','England','England']],['country',['Brazil','Brazil','Brazil','Brazil','Mexico','Mexico','Mexico']]]



print(list(map(lambda x:[x[0],list(set(x[1:][0]))],a)))
输出:

[['country', ['England', 'America']], ['country', ['Mexico', 'Brazil']]]
[['country', ['America', 'England'], ['orange', 'apple']], ['country', ['Brazil', 'Mexico'], ['banana', 'grapes']]]
[['country', ['America', 'England'], ['apple_1_more', 'orange_1_more']], ['country', ['Mexico', 'Brazil'], ['grapes_1_less', 'banana_1_more']]]
您的变量名称非常混乱,但我尝试了新方法,您可以尝试以下方法:

a = [['country',['America_1','America_2','America_3','America_4','England_5','England_6'],['apple_1_more','orange_1_more']],['country',['Brazil_2','Brazil_3','Brazil_1','Brazil_4','Mexico_1','Mexico_3','Mexico_2'],['grapes_1_less','banana_1_more']]]


final_data=[]
for i in a:
    sub_data=[]

    for j in i[1:]:
        d = {}

        for m in j:
            data=m.split('_')[0]
            d[data]=data

        sub_data.append(list(d.keys()))
    final_data.append(['country',*sub_data])
print(final_data)
输出:

[['country', ['England', 'America']], ['country', ['Mexico', 'Brazil']]]
[['country', ['America', 'England'], ['orange', 'apple']], ['country', ['Brazil', 'Mexico'], ['banana', 'grapes']]]
[['country', ['America', 'England'], ['apple_1_more', 'orange_1_more']], ['country', ['Mexico', 'Brazil'], ['grapes_1_less', 'banana_1_more']]]
如果您的数据格式总是这样,那么您可以尝试以下方法:

a = [['country',['America_1','America_2','America_3','America_4','England_5','England_6'],['apple_1_more','orange_1_more']],['country',['Brazil_2','Brazil_3','Brazil_1','Brazil_4','Mexico_1','Mexico_3','Mexico_2'],['grapes_1_less','banana_1_more']]]


final_data=[]
for i in a:
    sub_data=[]

    for j in i[1:]:
        d = {}

        for m in j:
            data=m.split('_')[0]
            d[data]=data

        sub_data.append(list(d.keys()))
    final_data.append(['country',*sub_data])
print(final_data)
更新 输出:

[['country', ['England', 'America']], ['country', ['Mexico', 'Brazil']]]
[['country', ['America', 'England'], ['orange', 'apple']], ['country', ['Brazil', 'Mexico'], ['banana', 'grapes']]]
[['country', ['America', 'England'], ['apple_1_more', 'orange_1_more']], ['country', ['Mexico', 'Brazil'], ['grapes_1_less', 'banana_1_more']]]

您可以尝试以下方法:

a = [['country',['America','America','America','America','England','England']],['country',['Brazil','Brazil','Brazil','Brazil','Mexico','Mexico','Mexico']]]



print(list(map(lambda x:[x[0],list(set(x[1:][0]))],a)))
输出:

[['country', ['England', 'America']], ['country', ['Mexico', 'Brazil']]]
[['country', ['America', 'England'], ['orange', 'apple']], ['country', ['Brazil', 'Mexico'], ['banana', 'grapes']]]
[['country', ['America', 'England'], ['apple_1_more', 'orange_1_more']], ['country', ['Mexico', 'Brazil'], ['grapes_1_less', 'banana_1_more']]]
您的变量名称非常混乱,但我尝试了新方法,您可以尝试以下方法:

a = [['country',['America_1','America_2','America_3','America_4','England_5','England_6'],['apple_1_more','orange_1_more']],['country',['Brazil_2','Brazil_3','Brazil_1','Brazil_4','Mexico_1','Mexico_3','Mexico_2'],['grapes_1_less','banana_1_more']]]


final_data=[]
for i in a:
    sub_data=[]

    for j in i[1:]:
        d = {}

        for m in j:
            data=m.split('_')[0]
            d[data]=data

        sub_data.append(list(d.keys()))
    final_data.append(['country',*sub_data])
print(final_data)
输出:

[['country', ['England', 'America']], ['country', ['Mexico', 'Brazil']]]
[['country', ['America', 'England'], ['orange', 'apple']], ['country', ['Brazil', 'Mexico'], ['banana', 'grapes']]]
[['country', ['America', 'England'], ['apple_1_more', 'orange_1_more']], ['country', ['Mexico', 'Brazil'], ['grapes_1_less', 'banana_1_more']]]
如果您的数据格式总是这样,那么您可以尝试以下方法:

a = [['country',['America_1','America_2','America_3','America_4','England_5','England_6'],['apple_1_more','orange_1_more']],['country',['Brazil_2','Brazil_3','Brazil_1','Brazil_4','Mexico_1','Mexico_3','Mexico_2'],['grapes_1_less','banana_1_more']]]


final_data=[]
for i in a:
    sub_data=[]

    for j in i[1:]:
        d = {}

        for m in j:
            data=m.split('_')[0]
            d[data]=data

        sub_data.append(list(d.keys()))
    final_data.append(['country',*sub_data])
print(final_data)
更新 输出:

[['country', ['England', 'America']], ['country', ['Mexico', 'Brazil']]]
[['country', ['America', 'England'], ['orange', 'apple']], ['country', ['Brazil', 'Mexico'], ['banana', 'grapes']]]
[['country', ['America', 'England'], ['apple_1_more', 'orange_1_more']], ['country', ['Mexico', 'Brazil'], ['grapes_1_less', 'banana_1_more']]]

使用此递归函数删除多级数组中的重复项:

def dup(input_):
    if isinstance(input_, list):
        try:
            input_ = list(set([i.split('_')[0] if not isinstance(i, list) else i for i in input_]))
        except TypeError:
            pass
        for child in input_:
            input_[input_.index(child)] = dup(child)

    return input_

使用此递归函数删除多级数组中的重复项:

def dup(input_):
    if isinstance(input_, list):
        try:
            input_ = list(set([i.split('_')[0] if not isinstance(i, list) else i for i in input_]))
        except TypeError:
            pass
        for child in input_:
            input_[input_.index(child)] = dup(child)

    return input_

我会这样做的

country_list1 = [a[0[0]]]
country_list2 = [a[1[0]]]
duplicates = [country for country in country_list1 in country_list2]
non_duplicates = [country for country in country_list1 not in country_list2]
这将为您提供复制的和非复制的
这是考虑到两种语言中名称的大小写敏感性,我将这样做

country_list1 = [a[0[0]]]
country_list2 = [a[1[0]]]
duplicates = [country for country in country_list1 in country_list2]
non_duplicates = [country for country in country_list1 not in country_list2]
这将为您提供复制的和非复制的
这是考虑到两个变量名称的大小写敏感性

如果您使用有意义的变量名称,您将有一个更轻松的时间。如果您使用有意义的变量名称,您将有一个更轻松的时间。谢谢,这非常有效…谢谢@Ayodhyankit Paul。。。已更新列表列表,但无法使用lambdaupdated。。使用拆分更新列表..获取错误..打印(列表(映射(lambda x:[x[0],列表(set(x[1:[0]))、拆分('',1[0])、列表(set(x[1:[1].split('',2)[0]+''+[2]),a)))属性错误:'list'对象没有属性'split-['country',['America','England',['apple','orange'],['country',['country',['Brazic','Mexico'],['grapes',['grapes','香蕉']]但是寻找['country'、['America'、[England']、['orange\u more'、[apple\u more']、['country'、[Mexico'、[Brazic']、['grapes\u less'、[banana\u more']]谢谢,这非常有效……谢谢@Ayodhyankit Paul。。。已更新列表列表,但无法使用lambdaupdated。。使用拆分更新列表..获取错误..打印(列表(映射(lambda x:[x[0],列表(set(x[1:[0]))、拆分('',1[0])、列表(set(x[1:[1].split('',2)[0]+''+[2]),a)))属性错误:'list'对象没有属性'split-['country',['America','England',['apple','orange'],['country',['country',['Brazic','Mexico'],['grapes',['grapes','香蕉']]但是寻找['country'、['America'、['England']、['orange\u more'、['apple\u more']、['country'、['Mexico'、['grapes\u less'、['banana\u more']]]、['grapes\u more']]、['grapes\u less'、['banana\u more']]]]回溯(最近一次调用最后一次):dup(a)输入=列表(设置([i.split('.[0]表示输入中的i]))AttributeError:“list”对象没有属性“split”回溯(最近一次调用):dup(a)输入=列表(set([i.split(“”)[0]表示输入中的i])输入=列表(set([i.split(“”)[0]表示输入中的i])AttributeError list对象没有属性“split”