Сравните вложенные списки в python и выведите недостающий элемент в список - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь сравнить список имен, каждое из которых содержит список фруктов, и вывести недостающий фрукт.

Ниже приведен фрагмент кода из исходного сценария. Я в основном создаю список имен и список фруктов, а затем добавляю список фруктов к списку имен.

В 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

1 Ответ

1 голос
/ 14 июля 2020

Использование 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 
...