@denislysenko
data engineer

Как написать фильтр для вывода в консоль исходя из передаваемого аргумента?

Есть список с повторяющимися жанрами. Нужно выводить в консоль определенное количество каждого жанра

вот мой код, не могу понять где ошибка
genres = ['Comedy','Comedy','Comedy','Comedy','Comedy','Comedy','Comedy', 'Dramma','Dramma','Dramma','Dramma','Dramma','Dramma', 'Action','Action','Action','Action','Action','Action','Action','Action','Action','Action','Action','Action','Action']
N = 3 

    
check = []
COUNT = 0        
def filter_number(genre, N, count):
    if genre not in check:
        check.append(genre)
        count = 1
        return True
    if genre in check and count <= N:
        count += 1 
        return True
    
    
for genre in genres:
    if filter_number(genre, N, COUNT):
        print(genre)


Мне нужно чтобы этот код выводил в консоль:
Comedy
Comedy
Comedy
Dramma
Dramma
Dramma
Action
Action
Action

То есть, если N = 2, то вывод в консоли должен быть таким:
Comedy
Comedy
Dramma
Dramma
Action
Action

Как добиться правильного вывода в консоль?

Нужна чтобы была такая структура:
genres = ['какие-то жанры']
N = # какое-то число

def filter()
    #какой-то код для фильтрации

for genre in genres:
    if filter( genre, N):
        print(genre)
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
0xD34F
@0xD34F
def fucking_filter(arr, max_count, key=lambda n: n):
  filtered = []
  count = {}

  for n in arr:
    k = key(n)
    count[k] = count.get(k, 0) + 1
    if count[k] <= max_count:
      filtered.append(n)

  return filtered


for n in fucking_filter(genres, N):
  print(n)
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
[print(''.join([i, '\n'])*N, end='') for i in set(genres)]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 08:04
1 руб./за проект
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект