[PYTHON] 문자열의 일부로 문자열 목록 정렬
PYTHON문자열의 일부로 문자열 목록 정렬
다음과 같은 형식의 문자열 목록이 있습니다.
['variable1 (name1)', 'variable2 (name2)', 'variable3 (name3)', ...]
... 그리고 알파벳순으로 (nameX) 부분을 기반으로 목록을 정렬하고 싶습니다. 이 일을 어떻게 하죠?
해결법
-
==============================
1.정렬 키를 변경하려면 키 매개 변수를 사용하십시오.
정렬 키를 변경하려면 키 매개 변수를 사용하십시오.
>>>s = ['variable1 (name3)', 'variable2 (name2)', 'variable3 (name1)'] >>> s.sort(key = lambda x: x.split()[1]) >>> s ['variable3 (name1)', 'variable2 (name2)', 'variable1 (name3)'] >>>
정렬 방식과 동일한 방식으로 작동합니다.
>>>s = ['variable1 (name3)', 'variable2 (name2)', 'variable3 (name1)'] >>> sorted(s) ['variable1 (name3)', 'variable2 (name2)', 'variable3 (name1)'] >>> sorted(s, key = lambda x: x.split()[1]) ['variable3 (name1)', 'variable2 (name2)', 'variable1 (name3)'] >>>
이 질문에 설명 된 것처럼 알파벳순 정렬이므로 2 자리 구성 요소의 경우 숫자로 해석하지 않습니다. "11"은 "2"앞에옵니다.
-
==============================
2.해결책은 다음과 같습니다.
해결책은 다음과 같습니다.
sorted(b, key = lambda x: x.split()[1])
왜? 목록을 정렬 (b라고 함)하려고합니다. 열쇠로서 우리는 이름 (X)을 사용할 것입니다. 여기서는 항상 앞에 공백이 있다고 가정하므로 목록의 항목을 두 개로 나눠서 두 번째 항목에 따라 정렬합니다.
-
==============================
3.당신은이 정규식을 사용할 수 있습니다 :
당신은이 정규식을 사용할 수 있습니다 :
>>> import re >>> r = re.compile(r'\((name\d+)\)') >>> lis = ['variable1 (name1)', 'variable3 (name3)', 'variable2 (name100)'] >>> sorted(lis, key=lambda x:r.search(x).group(1)) ['variable1 (name1)', 'variable2 (name100)', 'variable3 (name3)']
위의 코드는 name3 이전에 name100과 같은 것을 반환합니다. 원하지 않으면 다음과 같이해야합니다.
>>> r = re.compile(r'\(name(\d+)\)') def key_func(m): return int(r.search(m).group(1)) >>> sorted(lis, key=key_func) ['variable1 (name1)', 'variable3 (name3)', 'variable2 (name100)']
-
==============================
4.sort 메소드의 key 매개 변수 만 사용하면됩니다.
sort 메소드의 key 매개 변수 만 사용하면됩니다.
test.sort(key = lambda x: x.split("(")[1])
행운을 빕니다!
편집 : 테스트는 배열입니다.
from https://stackoverflow.com/questions/21431052/sort-list-of-strings-by-a-part-of-the-string by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 다른 파일의 변수를 사용하는 Python (0) | 2018.11.08 |
---|---|
[PYTHON] Python 3, ast.literal_eval (node_or_string)에 알려진 보안 구멍이 있습니까? (0) | 2018.11.08 |
[PYTHON] 파이썬 : 로컬 타임 존을 찾아냅니다. (0) | 2018.11.07 |
[PYTHON] 범위가 너무 큽니다. Python (0) | 2018.11.07 |
[PYTHON] python에서 sympy를 사용하여 표현식을 계산하는 방법 (0) | 2018.11.07 |