in
? Что-то явно лишнее - либо оператор, либо один из циклов. А то проверяется наличие строки в строке, а не в наборе строк.# хотим отобрать фильмы с такими жанрами - хотя бы одним, но не обязательно всеми сразу
genres_to_look_for = ['Drama', 'Crime']
# вот набор фильмов и их жанров
movies_and_genres = {
1: ['Drama', 'Action', 'Crime', 'Thriller'],
2: ['Drama'],
3: ['Drama'],
4: ['Comedy']}
# для каждого фильма проверяем наличие у него искомых жанров (хотя бы одного)
# если any заменить на all, то будет проверяться одновременное наличие всех искомых жанров
movies_filtered = {
movie: any((genre in genres) for genre in genres_to_look_for)
for movie, genres in movies_and_genres.items()
}
print(movies_filtered)
{1: True, 2: True, 3: True, 4: False}
- прямо то, что надо, согласно моему пониманию задачи - в первых трех есть жанр drama, последний в пролете. А если использовать all
, то получится {1: True, 2: False, 3: False, 4: False}
. convert_float
- в pandas тип одинаков для всех значений в столбце - в столбце есть значение, которое нельзя преобразовать в int. Чаще всего такое бывает, когда в столбце пропущено значение, т.к. пустое значение - это нампаевский NaN типа float.parse_dates
- передается список номеров или названий столбцов, которые необходимо распарсить в дату - отдельные столбцы или группы столбцов, если дата распределена по нескольким.date_parser
- дефолтный парсер нормально работает, хотя и сильно увеличивает время загрузки данных. Имеет смысл парсить даты отдельно после загрузки, если объем большой. lambda c: c.data == food
lambda c, food=food: c.data == food
from typing import List
def f_1(lst: List) -> None:
funcs = list()
for val in lst:
funcs.append(lambda: val)
# цикл закончился, val имеет значение последнего элемента из списка
for func in funcs:
print(func())
def f_2(lst: List) -> None:
funcs = list()
for val in lst:
funcs.append(lambda val=val: val)
for func in funcs:
print(func())
if __name__ == '__main__':
data = ['apple', 'tomato', 'potato']
print("\nf_1:")
f_1(data)
print("\nf_2:")
f_2(data)