파이썬에 요소가있는 두 개의 목록이 있습니다. 이 두 목록에서 몇 가지 검사를 수행하고 싶습니다. 내 목록은 다음과 같습니다.
list_A = [["'EASY'", "'LEVEL_C'", "'4'", '0.714', '\n'], ["'EASY'", "'LEVEL_D'", "'5'", '0.778', '\n'], ["'EASY'", "'LEVEL_D'", "'5'", '0.226', '\n'], ["'EASY'", "'LEVEL_D'", "'5'", '0.222', '\n'], ...]
list_B = [["'EASY'", "'LEVEL_B'", "'2'", '1.000', '\n'], ["'EASY'", "'LEVEL_C'", "'3'", '1.000', '\n'], ["'EASY'", "'LEVEL_D'", "'4'", '1.000', '\n'], ["'EASY'", "'LEVEL_D'", "'4'", '0.290', '\n'], ...]
변수 "EASY"및 값 (LEVEL_A-LEVEL_F)을 사용하는 변수 수준의 경우 점수 (1-6) 및 신뢰 변수 (0-1)에 해당하는 세 번째 변수가 있습니다. 내가 원하는 것은 easy와 level 변수에 대한 두 목록을 비교하고 모든 경우에 두 목록 (list_A 및 list_B) 중 어떤 것이 더 높은 점수를 갖고 어떤 신뢰를 갖는지 찾는 것입니다. 어떻게 할 수 있습니까?
규칙을 구성하는 방식은 처음에 실행 파일에서 파생 된 행을 가져 와서 목록으로 필터링했습니다. 내 목록의 벡터 예는 다음과 같습니다.
Rule: ('EASY', 'LEVEL_E') ==> ('4') , 0.182
'EASY' 'LEVEL_E' '4' 0.182
["'EASY'", "'LEVEL_E'", , "'4'", '0.182', '\n']
벡터를 만드는 데 사용하는 코드 :
for row in my_lines:
print row
row = re.sub('[()]', "", row)
row = row.replace("Rule: ", "")
row = row.replace(",", "")
row = row.replace("==>", "")
print row
split = re.split(r' +', row)
print split
그런 다음 목록을 생성하자마자 변수 Level에 해당하는 두 번째 요소로 정렬합니다.
list_A.sort(key=lambda x: x[1])
list_B.sort(key=lambda x: x[1])
편집 : 변수 수준으로 목록을 정렬했습니다. 이제 모든 변수 수준의 점수와 관련하여 두 목록을 비교하고 싶습니다. 레벨이 존재하지 않는 경우 점수는 0이고 동일한 점수가 두 번 존재하면 시스템은 가장 신뢰도가 높은 점수를 선호합니다. 변수 수준에 대해 가능한 모든 값을 어떻게 비교할 수 있습니까?
내 질문에 대한 마지막 해결책은 문자열에 대해 간단한 정렬을 사용하여 목록을 정렬 한 다음 비교를 수행 할 수 있도록 두 목록을 압축하는 것입니다. 사용 된 코드는 다음과 같습니다.
list_A.sort(key=lambda x: x[1])
list_B.sort(key=lambda x: x[1])
res = zip(list_A, list_B)
그러나 이전 답변에서 제안한 사전 솔루션이 목록을 사용하는 것보다 더 효율적인 것 같습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다