Python 如何查找不在输出列表中的项目列表,并将列表添加到输出列表中?

Python 如何查找不在输出列表中的项目列表,并将列表添加到输出列表中?,python,list,matching,Python,List,Matching,我有一个id为total\u list的列表。如果在已接受列表中找不到任何ID,我想将总计列表中的列表添加到已接受列表。这是一个数据集和我使用的代码。感谢您的帮助。谢谢 总清单样本= [u'50',u'51',[u u'46'、u'47',[u u'46'、u'48'、[u u u'46'、u'46'、u u'47'、[u u u'19'19']、[u u'19'19'、[u'19'19'、[u'u'19'19'、[u'u'19'[u'19'19'、[u'19'[u u'19'19'19'、[u

我有一个id为
total\u list
的列表。如果在
已接受列表
中找不到任何ID,我想将
总计列表
中的列表添加到
已接受列表
。这是一个数据集和我使用的代码。感谢您的帮助。谢谢

总清单样本= [u'50',u'51',[u u'46'、u'47',[u u'46'、u'48'、[u u u'46'、u'46'、u u'47'、[u u u'19'19']、[u u'19'19'、[u'19'19'、[u'u'19'19'、[u'u'19'[u'19'19'、[u'19'[u u'19'19'19'、[u'19'[u u'19'、[u'19'[u u'19'、[u'19'[u'19他们他们他们他们他们的19'、[u'19'、[u'19'、[u'19'、[u u'19'、[u'19'、[u'19'、[u'19'、[u'19'、[u'19'、[u'19'[u'19'、[u'19'、[u'19'u'41',u'42',u'43',u'44'],[u'37',u'38',u'39',u'40'],[u'40'、u'40'、u'41'、u'43'、u'44’、[u'294'、[u u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、[u'u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、u'294'、[u'你们们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们他们当中,“你们们”、“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们们”“你们u'294',u'295',u'296',u'297',u'298'],[u'794'、u'795'、u'795'、u'795'、u'795'、[u'794'、u'795'、u'795'、u'796'、u'783'、u'783'、u'783'、u'783'、[u'783'783'、[u'u'u'783'783'、[u'u'784'784'、u'794'、u'784'、u'784'、[u'784'、u'784'、u'784'、u'784'、u'u'784'、u'784'、u'784'、u‘784'、u'u'u‘786'、u‘786'、u'你们们'、u'786'、u'你们们'、u‘786'、u'8'、u'8'、u'7 7 7 7[782',u'787',u'788',u'789'],[u'792',u'793',u'794',u'795',u'796',u'798',u'799'],[u'793',u'794',u'795',u'798',u'799',u'800'],[u'21',u'23',u'25',u'816',u'817'],[u'21',u'22',u'23',u'24',u'24',u'25',u'25',u'815',u'815',u'816',u'782',u'787',u'781',u'782',u'787'],[u'21'、u'21'、u'21'、u'21'、u'21'、u'21 21'、u'21 21'、u'21'、u'816'、u'817'、u'21'、u'21'、u'21'、u'22'、u'22'、u'23'、u'24'、u'24'、u'24'、u'25'、u‘814’、u'814’、u'814’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'815’、u'5’781',u'783',u'784',u'785',u'789',u'790',u'791'],[u'783',u'788',u'789',u'790',u'791',u'792',u'797',u'804',u'805'],[u'26',u'780',u'781',u'783',u'787',u'788',u'789',u'790',u'804'],[u'21',u'22',u'23',u'24',u'25',u'814',u'815',u'816',u'817'],[u'26',u'808',u'818',u'818',u'818'],[u'785'u'785'u'792'u'795',u'793'u'793'u'793'u'793'、u'794'u'795'u'795',u'808'u'808'、u'808'u'808'u'808'、u u'808'808'8'8'8'8'8'、u'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'、u'8'8'8'、u'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'、u'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'8'814',u'815',u'817',u'818'],[u'801',u'802',u'803',u'806',u'809',u'810',u'811',u'812',u'813',u'814',u'784',u'785',u'790',u'791',u'792',u'793',u'794',u'797',u'798',u'799',u'803',u'804'],[u'21',u'22',u'23',u'24',u'25',u'808',u'794',u'818',u'818',u'818',u'818',u'818'],[u'792',u'793',u'794',u'795',u'796',u'797',u'798',u'799',u'801',u'802',u'803'],[u'797',u'798',u'799',u'800',u'801',u'806',u'810',u'811',u'812',u'813'],[u'789',u'790',u'791',u'792',u'797',u'803',u'804',u'805',u'818'],“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'784,“u'784”,u'784,“u'784”,u'785,“u'785”,u'785,“u'795”,u'791,“u'793”,u'783,“u'783”,u'783,“u'783'783”,u'783,“u'783”,u'783'783你们们,“u'783”,u'783'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783,“u'783”,u'783他们他们他们他们他们],[u'24',u'24',u'24',u'24',u'24',u'24',u'24',u'24',u'24',u'24',u'24',u'24',u'25',u'25',u''808',u'808'808',u'808'808'u'808',u'808',u'8'8'8'8'8'8',u'8'808',u'8'8'8'8'8'8'8'8'u'8'8'8'8'你们们,u'8'8'8'8'8'8'8'8',u'8'8'8'8'8'8'8'8'8'你们们,u'808'8'8'8'8'8'8'你们们,u'8'808'8'8'8'8'8'8 817',u'818'],“u'805”、u'805、u'806、u'806、u'808、u'805、u'806、u'807、u'809、u'807、u'807、u'807、u'797、u'797、u'797、u'797、u'797、u'八八七七七、u'八七、u'八八七七、u'八八七七、u'八八七、u'八八七、u'八八八七、u'八八八七、u'八八八八八八、你们你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘7’’’’’’’’’’’’’’’’、你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们‘你们们,u'816',u'817',u'818'],[u'791',u'792',u'797',u'798',u'799',u'800',u'801',u'802',u'803',u'804',u'805',u'806',u'811',u'791',u'792',u'793',u'794',u'795',u'796',u'797',u'798',u'799',u'800',u'801 u'802',u'803',u'805',u'806'],[u'790',u'791',u'792',u'793',u'797',u'798',u'799',u'800',u'801',u'802',u'803',u'804',u'802',u'804',u'805',u'806',u'808',u'809',u'810 u'811',u'812',u'813',u'814',u'815',u'817',u'818']

因此,当我浏览我的
total_list
时,第一个项目是19个,在我的接受的_list(空)的列表中找不到它。一旦它在
total_list
的列表中找到一个项目,它就不会将它添加到
接受的_list

accept_intersect = []
inaccept = False

for i in totallist:
    if not accept_intersect:
        accept_intersect.append(i)
        continue
    for p in i:
        for a in accept_intersect:
            if p in a:
                inaccept = True
                break
    if inaccept is False:
        accept_intersect.append(i)
    elif inaccept is True:
        pass

for a in accept_intersect:'
    print a

如果你有没有看到一个id,使用字典来存储可能会更快

accept_intersect=[]
seen = {}

for item in totallist:
    for sub_item in item:
        if sub_item not in seen:
            accept_intersect.append(sub_item)
            seen[sub_item] = True;

print accept_intersect
如果此答案对您有帮助,请按左侧的绿色勾号

编辑,根据要求更新

accept_intersect=[]
seen = {}

for item in totallist: 

    # Track if a subitem has been seen
    seen_flag = False

    for sub_item in item:

        # If it has been seen before
        # stop looking in this list
        if sub_item in seen:
            seen_flag = True
            break

        # Add seen item
        seen[sub_item] = True

    # If a subitem was seen, skip and continue
    # with the next loop.
    if seen_flag == True:
        continue

    # Only append if no items were seen before.
    accept_intersect.append(item)

#totallist = [['19'], ['19', '22']]
#accept_intersect -> [['19']]

#totallist = [['19'], ['19', '22'], ['43'], ['44', '45'], ['65', '19']]
#accept_intersect -> [['19'], ['43'], ['44', '45']]

按从高到低排序的位置与此解决方案无关。当您构建总列表输入时,只需按您所需的方式排列即可。

我不会使用dict,因为集合是两种用例中任何一种的本机实现:

1) 输出平坦化

2) 接受两级输出

以下回答提供了两种可能性(因为我不清楚问题中要求的是哪一种):

运行时在我的机器上产生:

['19', '34', '36', '50', '51']
[['19'], ['34', '36'], ['50', '51']]
因此,需要说明的主要问题是,如果您希望变量1)扁平化,那么您的输入是可自动散列的,因此适合dicts并设置为键,因此,其他两个建议的答案(到目前为止)也都可以工作。但是如果您希望接受列表作为条目,并希望过滤掉重复项
['19', '34', '36', '50', '51']
[['19'], ['34', '36'], ['50', '51']]
ch_l=[]
out_l=[]
out_l=[x for x in total_list if any(y not in ch_l for y in x) and [ch_l.append(z) for z in x if x]]