Я хочу сравнить элементы списков. Я проанализировал данные из текстового файла, но не смог сравнить списки.
Это списки, которые я получил после разбора текстового файла:
[['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
Вот рабочая реализация, которая сначала находит индексы соответствующих элементов 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
Добро пожаловать в StackOverflow. Ваш вопрос немного бессвязен. Вот ссылка (stackoverflow.com/help/как спросить) о том, как улучшить свой вопрос. Он должен предоставить нам достаточно информации, чтобы мы могли диагностировать проблему и предложить решение.