Python список элементов сравнения списка

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

Это списки, которые я получил после разбора текстового файла:

[['Detected', '1', '-9.5', 'S19960'],['Active', '3', '-14.3', 'S19966'],
['Detected', '10788', '-10.5', 'S19961']]

[['Active', '2', '-16.3', 'S15620'],['Monitored', '2', '-18.2', 'S15629'],
 ['Detected', '2', '-8.8', 'S1003H'], ['Detected', '2', '-10.3', 'S02965'],
 ['Detected', '2', '-6.3', 'S56615'], ['Detected', '2', '-20.8', 'S10105'],
 ['Active', '2', '-20.8', 'S06940'], ['Detected', '2', '-17.8', 'S52835'],
 ['Detected', '2', '-20.8', 'S5198E'], ['Detected', '2', '-21.2', 'S56749'],
 ['Serving', '2', '-12.2', 'S02035'], ['Monitored', '2', '-24.5', 'S04919']]

Код найдет Detected элементов и проверит, больше ли -9,5 (вторые элементы списков), чем -12. Если он больше, он проверит элементы Active и Servings.

Например -9.5 > -14.3, если разница больше 3, вывод будет для первого списка:

S19960 > S19966 | S19961 > S19966

для второго списка:

S1003H > S15620,S06940,S02035 | S56615 > S15620,S06940,S02035

Добро пожаловать в StackOverflow. Ваш вопрос немного бессвязен. Вот ссылка (stackoverflow.com/help/как спросить) о том, как улучшить свой вопрос. Он должен предоставить нам достаточно информации, чтобы мы могли диагностировать проблему и предложить решение.

Spinor8 07.04.2019 21:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот рабочая реализация, которая сначала находит индексы соответствующих элементов Detected (со значением больше -12) и сравниваемых элементов (элементы Active и Serving). Затем он использует эти индексы для анализа и сравнения значений в списке и создания выходной строки:

def comparisonFromList(data):

    # find indexes of Detected elements with value > -12
    detected = [i for i in range(len(data)) if data[i][0] in ['Detected'] and float(data[i][2]) > -12]

    # find indexes of Active and Serving elements
    tocompare = [i for i in range(len(data)) if data[i][0] not in ['Detected','Monitored']]

    output = ""
    for i,detect in enumerate(detected):
        if i > 0:
            output += ' | '
        output += data[detect][3];
        output += ' > '
        for j,compare in enumerate(tocompare):
            if abs(float(data[detect][2]) - float(data[compare][2])) > 3:
                if 0 < j:
                    output += ','
                output += data[compare][3];

    return output

Вывод (на основе двух предоставленных вами входных списков):

> print(comparisonFromList(list1))
S19960 > S19966 | S19961 > S19966

> print(comparisonFromList(list2))
S1003H > S15620,S06940,S02035 | S02965 > S15620,S06940 | S56615 > S15620,S06940,S02035

Демо: https://repl.it/@glhr/55562796

Другие вопросы по теме