[英]python list of list comparing elements
我想比较列表的元素。 我从文本文件中解析了数据,但无法比较列表。
这些是我解析文本文件后得到的列表:
[['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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.