값 집합 정렬 [닫힘]


112

다음과 같은 값이 있습니다.

set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
set(['4.918859000', '0.060758000', '4.917336999', '0.003949999', '0.013945000', '10.281522000', '0.025082999'])  

각 값 set을 오름차순 으로 정렬하고 싶습니다 . 세트간에 정렬하는 것이 아니라 각 세트의 값을 정렬하고 싶습니다.


3
튜플은 문제와 관련이 있으며 무엇을 시도 했습니까?
Fred Foo 2013

3
나는 파이썬 세트에 주문 개념이 없다고 생각합니다. 이것은 당신을 도울 것입니다 : stackoverflow.com/questions/1653970/…
zallarak

3
세트는 질서가 없습니다. 그것은 속성 중 하나입니다. 모든 언어로. 을 사용합니다 list.
Karoly Horvath 2013

4
@KarolyHorvath "세트는 질서가 없습니다. 모든 언어에서 속성 중 하나입니다." C ++ std::set가 주문됩니다.
Timothy Shields 2013

17
사람들이 사실 이후에이 질문을 종결 (또는 주제에서 벗어남) 한 이유는 무엇입니까? 예, OP가 우리가 문제를 해결하는 대신 문제를 설명했다면 더 좋았을 것입니다. 하지만 이제 우리는 그렇게했고 그의 질문을 일치하도록 편집했고 그가 대답을 받아들 였으니, 나는 가까운 투표가 어떻게 의미가 있는지 모르겠습니다.
abarnert

답변:


218

댓글에서 :

각 세트를 정렬하고 싶습니다.

쉽습니다. 모든 집합 s(또는 반복 가능한 다른 항목) 에 대해 정렬 된 순서 sorted(s)로의 요소 목록을 반환합니다 s.

>>> s = set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
>>> sorted(s)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '10.277200999', '4.918560000']

sorted당신에게주고있다 list하는 없습니다 set. 두 세트의 요점 때문이다 수학 하고있는 거의 모든 프로그래밍 언어 세트를 : *이 주문 아니에요이다 {1, 2}{2, 1}같은 집합입니다.


이러한 요소를 문자열로 정렬하지 않고 숫자로 정렬하고 싶지는 않을 것입니다 (따라서 4.918560000은 10.277200999 이후가 아닌 10.277200999 이전에 올 것입니다).

가장 좋은 해결책은 처음에 숫자를 문자열이 아닌 숫자로 저장하는 것입니다. 그러나 그렇지 않은 경우 key함수 를 사용해야 합니다.

>>> sorted(s, key=float)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '4.918560000', '10.277200999']

자세한 내용 은 공식 문서 의 Sorting HOWTO 를 참조하십시오 .


* 예외 사항은 주석을 참조하십시오.


1
@TimothyShields : 맞습니다. "일반적인 용어를 오용하는 것을 좋아하지 않는 모든 프로그래밍 언어"라고 말 했어야합니다. "수정되지 않음"이 "변이"를 의미하는 언어에서 " set정렬 된 목록" 을 의미하는 것은 놀라운 일이 아니며 unordered_set"세트"를 의미 한다고 말해야 합니다…
abarnert

2
그 이름이 좋은지 나쁜지는 토론의 대상이 아닙니다. "집합은 어떤 언어로도 정렬되지 않는다"는 진술은 거짓입니다.
Timothy Shields

5
수학 집합에 대한 위키 백과 페이지에서 "순서 없음"이라는 단어를 찾을 수 없습니다. "주문 됨"이라는 단어도 찾을 수 없습니다. 세트에 대한 수학적 연산 과 관련 이 없기 때문 입니다. 특정 언어가 세트를 정렬하기 위해 선택하는지 여부는 구현 세부 사항입니다. en.wikipedia.org/wiki/Set_(mathematics)
Timothy Shields

3
@TimothyShields : 한편, 당신이 연결 한 Set (수학)의 위키피디아 페이지에는 정의에서 이미 분명하기 때문에 "무 순서"라는 단어가 없습니다. 특히, "세트 A와 B는 정확히 동일한 요소가있는 경우에만 동일합니다." 주문 된 컬렉션에는 해당되지 않습니다. ( "집합 또는 다중 집합의 요소가 나열되는 순서는 관련이 없습니다."와 같은 문장도 있습니다. 따라서 조금만 다르게 검색했다면 개념을 이해하지 않고도 찾을 수있었습니다.)
abarnert

3
@TimothyShields :하지만은 std::set 않습니다 순서를 노출 (뿐만 아니라 API를 통해 확실한 방법으로, 주문 기능이 실제로 유형의 일부 특정 세트). 요소가 항상 엄격한 약한 순서로 정렬된다는 사실은 개념의 바로 그 정의의 일부입니다. 그래서 당신의 주장은 논쟁의 여지가 있습니다. 하지만 그렇지 않더라도 왜 중요할까요? 집합은 수학에서와 마찬가지로 거의 모든 프로그래밍 언어에서 순서가 지정되지 않습니다. 단어를 사용하여 다른 것을 의미하는 외래 언어가 있다는 사실은 그 진술을 덜 사실로 만들지 않습니다.
abarnert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.