У меня есть список фруктов:Как найти пересечение списка и вложенного списка?
fruits = ["apple","banana"]
У меня также есть вложенный список корзин, в котором каждый список содержит строку (имя корзины) и список фруктов.
baskets = [["basket1",["apple","banana","pear","strawberry"]],["basket2",["strawberry","pear","peach"]],["basket3",["peach","apple","banana"]]]
Я хотел бы знать, какие наборы содержат каждые фрукты в плодах списка: результат я ожидаю список с двумя элементами, «корзины1» и «basket3».
Я полагал, что перекрестки будет самым чистым способом достижения этого, и я попытался следующие:
myset = set(fruits).intersection(*map(set, set(baskets)))
Но я получаю TypeError «unhashable типа:" список». Я понимаю, что я не могу сопоставлять списки, но я думал, что использование функции «set» в обоих списках приведет к их преобразованию в набор ... есть ли другой способ найти пересечение списка и список списков?
почему бы вам не использовать словарь для корзин? – Sasa
@Sasa Это имеет значение? – kormak
@kormak: В этом случае не _huge_, но да. Вместо того, чтобы смотреть на второй элемент каждого списка в списке 'baskets', вы просто посмотрите на каждое значение в dict' baskets'. В общем, использование правильной структуры данных для работы облегчает вашу жизнь. – abarnert