比较 python 中的嵌套列表并输出列表中缺少的项目

Compare nested lists in python and output the missing item in the list

我正在尝试比较一个名称列表,每个名称都包含一个水果列表,并输出缺少的水果。

以下是原始脚本中的代码片段。我基本上创建了一个名称列表和一个水果列表,然后我将水果列表附加到名称列表中。

在python中如何比较每个名称的水果列表?

代码片段

namelist = []
namelist.append(users_row[7])
fruitlist = []
fruitlist.append(users_row[4])
namelist.append((list(fruitlist), fruitlist))
print(fruitlist)

当前输出

['John', ([['Apple', 'Orange', 'Pear', 'Grapes']])]
['Amy', ([['Apple', 'Orange', 'Pear', 'Grapes', 'Mango']])]
['Peter', ([['Apple', 'Orange', 'Grapes']])]

需要输出

John,Mango
Amy
Peter,Pear,Mango

使用list-comprehension:

假设有一个 master_lst 这是我们要与我们想要的列表进行比较的列表:

master_lst = ['Apple', 'Orange', 'Pear', 'Grapes', 'Mango']

johns_lst = ['Apple', 'Orange', 'Pear', 'Grapes']
amys_lst = ['Apple', 'Orange', 'Pear', 'Grapes', 'Mango']
peters_lst = ['Apple', 'Orange', 'Grapes']

print([x for x in master_lst if x not in johns_lst])
print([x for x in master_lst if x not in amys_lst])
print([x for x in master_lst if x not in peters_lst])

输出:

['Mango']                                                                                                                                                                    
[]                                                                                                                                                                           
['Pear', 'Mango']

描述所需的输出:

print("John,", ",".join([x for x in master_lst if x not in johns_lst]))
print("Amy,", ",".join([x for x in master_lst if x not in amys_lst]))
print("Peter,", ",".join([x for x in master_lst if x not in peters_lst]))

输出:

John, Mango                                                                                                                                                                  
Amy,                                                                                                                                                                         
Peter, Pear,Mango