2013-06-02 2 views
0
List = ["Wednesday_A_20", "Tuesday_C_22", "Thursday-A-30"] 

제가정렬 및 반복 된 부분에 대해 설정

List.sort(key=lambda x: x.split("_", 1)[-1]) 

으로이 정렬 할 수 있지만

세트() 를 사용

으로 원하는 출력을 얻을 수있다
"Wednesday_A_20", "Tuesday_C_22" 

섹션 1에서 반복되는 문자가 될 수 없습니다. python의 새로운 기능 더 나은 방법 ??? 내가 바로 당신을 이해하는 경우에만 고유 한 부분이 아닌 전체 문자열이기 때문에 미리

+0

"-"와 "_"이 섞여있는 것처럼 보입니다. – oleg

답변

3

감사, 당신은

In [1]: mylist = ["Wednesday_A_20", "Tuesday_C_22", "Thursday_A_30"] 

In [2]: key = lambda s: s.split('_')[1] 

In [3]: from itertools import groupby 

In [4]: [next(g) for k, g in groupby(sorted(mylist, key=key), key=key)] 
Out[4]: ['Wednesday_A_20', 'Tuesday_C_22'] 

세트는 여기 직접 적용 할 수 없습니다 할 수 있습니다. 당신은 dict를 사용할 수 있습니다.

0

마지막에 한 번만 정렬해야하는 경우 키가 A, C 등이며 수요일 _A_20 등의 사전을 사용하는 것이 가장 좋습니다. dict.keys()를 가져 와서 정렬하십시오.

키의 각 단계별로 항목을 정렬해야하는 경우에도 위와 같은 키와 값을 사용하지만 설명 대신 공백 (http://stromberg.dnsalias.org/~strombrg/treap/) 또는 빨간색 - 검정색 트리 (https://pypi.python.org/pypi/red-black-tree-mod)를 사용합니다. 둘 다 (사전)는 사전처럼 작동합니다. 단, 키는 항상 순서대로 유지되며 사전보다 약간 느립니다 (그러나 루프 내에서 사전 키를 정렬하는 것보다 느리지는 않습니다!). 트랩은 평균적으로 빠르며 (일괄 처리 애플리케이션에 좋음), 빨강 - 검정 나무는 표준 편차가 더 낮습니다 (대화 형 애플리케이션에 적합 함).

관련 문제