我有5个列表,其中包含以下记录:
list1 = [1,2,3,4,7,13,19,21]
list2 = [1,2,7,13,14,19,21]
list3 = [3,5,6,15]
list4 = [17,18]
list5 = [20]
我想创建一个列表,其中包含列表中所有元素的并集,并指出它们存在于哪个原始列表中。
output_list = [[1,True,True,False,False,False],[2,True,True,False,False,False],[3,False,False,True,False,False],...]
答案 0 :(得分:1)
要获得所有列表之间的联合,您可以使用set
。
然后,你只需要为所有元素迭代遍历所有列表来测试元素是否在列表中:
table = [[i]+[i in l for l in (list1, list2, list3, list4, list5)]
for i in set(list1+list2+list3+list4+list5)]
然后你可以,如果你想:
print('ID | cat1 | cat2 | cat3 | cat4 | cat5')
for line in table:
print(' | '.join(line))
或使用csv
模块。
答案 1 :(得分:0)
尝试使用此预期输出。
>>>[[i] + [i in j for j in [list1,list2,list3,list4,list5]] \
for i in range(1, max(list1+list2+list3+list4+list5)+1)]
#output
[[1, True, True, False, False, False],
[2, True, True, False, False, False],
[3, True, False, True, False, False],
[4, True, False, False, False, False],
[5, False, False, True, False, False],
...
答案 2 :(得分:0)
你去:
>>> for x in set(list1+list2+list3+list4+list5):
... [x]+map(lambda y:True and False or x in y, [list1,list2,list3,list4,list5])
...
[1, True, True, False, False, False]
[2, True, True, False, False, False]
[3, True, False, True, False, False]
[4, True, False, False, False, False]
[5, False, False, True, False, False]
[6, False, False, True, False, False]
[7, True, True, False, False, False]
[13, True, True, False, False, False]
[14, False, True, False, False, False]
[15, False, False, True, False, False]
[17, False, False, False, True, False]
[18, False, False, False, True, False]
[19, True, True, False, False, False]
[20, False, False, False, False, True]
[21, True, True, False, False, False]
答案 3 :(得分:-2)
您可以尝试以下代码:
def in_list(list,ele):
if ele in list:
return 'True'
return 'False'
csvlist = []
print "ID\tcat1\tcat2\tcat3\tcat4\cat5"
for i in range(max(max(list1),max(list2),max(list3),max(list4),max(list5))+1):
print str(i)+"\t"+in_list(list1,ele)+"\t"+in_list(list2,ele)+"\t"+in_list(list3,ele)+"\t"+in_list(list4,ele)+"\t"+in_list(list5,ele)+"\n"
csvlist.append([i,in_list(list1,ele),in_list(list2,ele),in_list(list3,ele),in_list(list4,ele),in_list(list5,ele)])