2010-06-23 11 views
0

각 개체에는 end_date 특성이있는 정렬되지 않은 목록이 있습니다.개체 속성을 기반으로 목록에서 개체를 정렬/분류하는 가장 효율적인 방법

목록은 특정 순서없이 [obj1, obj2, obj3, <]>처럼 보입니다. ,

[[ "5월 5일 (토요일)", [OBJ3, OBJ5]], [ "5월 7일 (월요일)", [OBJ1, obj8 :

나는 다음과 같습니다 명부를 종료 할 obj9]] ... etc]

기본적으로 "키"는 개체의 날짜이며 해당 키의 값은 해당 날짜가있는 개체의 목록입니다. 날짜 형식을 걱정하지 마십시오. 날짜/시간을 쉽게 조정할 수 있습니다. 나는 사전을 사용하는 것이 상대적으로 쉽다는 것을 알고 있지만, 키별로 정렬 된 목록으로 끝내야한다. (적어도 파이썬 2.6 IIRC에서는 그렇지 않다)

이 작업을 수행하는 가장 효율적인 방법은 무엇입니까? 나는 여러 가지 루프를 사용하여 몇 가지 해결책을 뒤섞어 봤지만 잘못되었다고 생각된다.

+0

을 정렬? 혼란스러운 코드를 보여주십시오. 더 많은 ** 구체적인 ** 질문을하는 것이 도움이됩니다. –

+0

완전히 다른 접근법을 사용하여 끝났습니다. sort (key = lambda obj : obj.date)를 사용하여 날짜순으로 목록을 정렬 한 다음 django 템플릿 엔진에 전달하고 regroup 함수를 사용했습니다. 도와 주셔서 감사합니다! – Andrew

답변

0

당신은 dict로 가져 오는 방법을 알고 있다고하셨습니다. 그래서, 바로 결과를 정렬 :

d = ToDict(...) 
sorted_values = sorted(((date,list) for date,list in d.iteritems())) 

당신이 당신의 날짜 형식을 조작하려는 경우 O(n log n)

당신은뿐만 아니라 sorted에 정렬 방법을 제공 할 수있을 것이다. sorting in python overview을 참조하십시오.

0

목록을 가져올 수 l=list(dictionary.iteritems())를 사용 후, 사전에 그것을 넣어 l.sort()는 당신이 시도 무엇

1
itertools.groupby(sorted(L, key=operator.attrgetter('end_date')), 
    key=operator.attrgetter('end_date')) 
관련 문제