Перебрать список, прошу помочь

Дан список, где элементы - списки. Пример:

[[137.0, '2021-01-22'], [139.0, '2021-01-23'], [142.0, '2021-01-26'], [137.0, '2021-01-27'], [142.0, '2021-01-28'], [137.0, '2021-01-29'], [142.0, '2021-01-30']]

Если заметили что списке значение 137.0 встречается 3 раза общем списке, вот если определенный элемент хотябы три раза или более встречается нужно дать сигнал, что и именно таких датах встречается одинаковые цены, а если меньше трех раз тогда игноририется.


Ответы (1 шт):

Автор решения: Zhihar

например можно сделать так (в лоб):

arr = [[137.0, '2021-01-22'], [139.0, '2021-01-23'], [142.0, '2021-01-26'], [137.0, '2021-01-27'], [142.0, '2021-01-28'], [137.0, '2021-01-29'], [132.0, '2021-01-30']]

res = [obj for obj in arr if len([1 for elem in arr if elem[0] == obj[0]]) >= 3]

print(res)

т.е. выделяем только те элементы, первый элемент которых встречается в массиве 3 раза и более

т.е.

проходим по всем элементам списка

for obj in arr

и для каждого элемента считаем сколько раз его первое значение встречается в массиве

len([1 for elem in arr if elem[0] == obj[0]])

в данном случае просто формируем произвольный массив и подсчитываем кол-во его элементов

тоже самое можно сделать чуть менее скотско и более читабельно:

res = [obj for obj in arr if [elem[0] for elem in arr].count(obj[0]) >= 3]
→ Ссылка