2014-02-20 2 views
0

내가 전혀 가능 여부되지 않는 값하지만 난 0과 1 두 사이의 값을 가지고 즉정렬 목록

list = ["0.75543 blue", "0.5454 red", "0.113424 blue", "0.9993233 red" and so on] and so on. 

처럼 많은 값으로 구성된 목록을 가지고있다 파란색과 빨간색 레이블. array.sort()을 클릭하면 목록의 값이 문자열이기 때문에 제대로 정렬하지 않습니다. 레이블에 독립적으로 값을 기준으로 목록을 올바르게 정렬 할 수 있기를 원합니다. 그게 가능하니?

+1

숫자를 기준으로 정렬 하시겠습니까? – thefourtheye

+0

예. 숫자 만 정렬하고 싶습니다. – user3149650

+2

'list'는 내장형이고 함수이기 때문에 변수 이름으로 사용하지 마십시오. – 2rs2ts

답변

6

예. 문자열의 첫 번째 부분에있는 숫자 값을 기준으로 정렬 할 수 있습니다. sort을 각 문자열에서 숫자를 추출하는 키로 전달하십시오.

데모

>>> L = ["0.75543 blue", "0.5454 red", "0.113424 blue", "0.9993233 red"] 
>>> L.sort(key=lambda l: float(l.split()[0])) 
>>> L 
['0.113424 blue', '0.5454 red', '0.75543 blue', '0.9993233 red'] 

또한, 당신이 무슨 일을하는지에 따라, 당신은 쉽게 튜플로 값 레이블 쌍을 저장하는 찾을 수 있습니다. 그런 다음 정렬은 더 쉽게 (그리고 틀림없이 더 직관적)입니다 : 마지막으로

>>> L = [(0.75543, "blue"), (0.5454, "red"), (0.113424, "blue"), (0.9993233, "red")] 
>>> L.sort(key=lambda t: t[0]) 
>>> L 
[(0.113424, 'blue'), (0.5454, 'red'), (0.75543, 'blue'), (0.9993233, 'red')] 

, 귀하의 목록에 이름을하지 마십시오 list; list은 내장형이며 Python에서 작동합니다 (@ 2rs2ts의 설명 참조).

+0

시도해 보았지만 AttributeError : 'float'객체에 'split'속성이 없습니다. – user3149650

+0

@ user3149650 : 목록은 어떻게 생겼습니까? 그것은 내 데모에서 목록에 대해 작동하므로, 당신의 가정과 약간 다를 것이라고 생각하십니까? – mdml