2016-06-02 2 views
-2

그래서이 코드가 반환해야합니다I 값의 순서에 따라 사전을 정렬하고 그

new_dict = {"1":[], "2":[], "3":[], "4":[]} 
for coordinates in numbers: 
    if coordinates == (48, 12): 
     new_dict["1"].append(coordinates) 
    elif coordinates in [(68, 125), (54, 160), (20, 137)]: 
     new_dict["2"].append(coordinates) 
    elif coordinates in [(113, 69), (152, 53)]: 
     new_dict["3"].append(coordinates) 
    elif coordinates == (108, 149): 
     new_dict["4"].append(coordinates) 
sorted_dict = sorted(new_dict.items()) 
for x,y in sorted_dict: 
    print (x,y) 

인쇄 대신 단지 기능에 인쇄의

1 [(48, 12)] 
2 [(68, 125), (54, 160), (20, 137)] 
3 [(113, 69), (152, 53)] 
4 [(108, 149)] 

합니다. 어떻게 그것을 반환 할 수 있으며 튜플로 변경하지 않고 그대로 유지할 수 있습니다.

감사합니다.

+1

사용'collections.OrderedDict' 수정. –

+0

들여 쓰기를 확인하십시오. 한 번 분류하면 충분합니다. –

+6

정렬하면 이유에 따라 튜플로 변경됩니다. Dicts는 ** 정렬되지 않은 컬렉션 **입니다. 당신의 필요에 부합하지 않기 때문에 그들이 일하는 방식을 마술처럼 바꿀 수는 없습니다. 다른 데이터 구조를 사용해야합니다. –

답변

1
return '\n'.join([' '.join([str(x),str(y)]) for x,y in sorted_dict]) 

당신이 쓰는 것에서 나는 당신이 그것을 '위에서 보여준 것과 똑같은'돌려 주길 원한다는 것을 수집합니다.

편집 : 죄송 요소를 넣지 않은 x,ystr()에, 지금이 작업

관련 문제