다음과 같은 목록이 있습니다.
a = ['1', '3', '02', 'WF2', 'WF5', 'WF01']
다음과 같이 정렬하고 싶습니다.
a = ['1', '02', '3', 'WF01', 'WF2', 'WF5']
다음과 같이 사용 :
def sortby(id):
if 'WF' not in id and id.isdigit():
return int(id)
elif 'WF' in id.upper():
return float('inf')
a.sort(key=sortby)
'WF'접두사없이 정수를 정렬 할 수 있지만 'WF'접두사가 붙은 정수를 자체적으로 정렬하는 방법을 모르겠습니다.
이중 정렬을 사용해야합니까, 즉 다시 정렬하고 접두사 'WF'가있는 항목 만 정렬하고 'WF'접두어가없는 다른 모든 항목에 -Inf를 할당해야합니까? 어떤 생각?
수정 :
def sortby(id):
if 'WF' not in id.upper():
return int(id)
return float('inf')
def sortby2(id):
if 'WF' not in id.upper():
return float('-inf')
return int(id.replace('WF', ''))
a.sort(key=sortby)
a.sort(key=sortby2)
근데별로 좋지 않아 ...
bool
및의 쌍을 반환합니다 int
. bool
항목이 다음으로 시작 WF
하고 두 번째 항목이 실제 정수 값 인지 여부를 지정합니다 .
>>> lst = ['1', '3', '02', 'WF2', 'WF5', 'WF01']
>>> def key(item):
... return item.startswith('WF'), int(item.lstrip('WF'))
...
>>> sorted(lst, key=key)
['1', '02', '3', 'WF01', 'WF2', 'WF5']
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다