2015-02-07 5 views
2

이전 질문에서 동료의 점수 중 일부를 사전에 함께 게시하여 Reading data separated by colon per line in Python이라는 사전에 찾아 냈습니다. 키가 이름순으로 정렬되도록 사전을 정렬하려는 경우 Adam, DaveJack의 점수가 순서대로 표시됩니다.사전 순의 사전 키

나는 방법 아래 사용했다 :

sorted(self.docs_info.items) 

그러나 그것은 아무 것도 반환하지 않습니다. 나는 또한 내가 pprint 방법을 사용하려고 형식

Adam 12 34 
Dave 25 23 
Jack 13 

에서 IDLE로 반환 될,하지만 그 중 하나가 작동하지 않았다합니다. 어떻게 해결할 수 있습니까? (완료)

내 앞의 코드는 다음과 같이 나타났다 :

from collections import defaultdict 
d = defaultdict(list) 
with open('guesses.txt') as f: 
    for line in f: 
     name,val = line.split(":") 
     d[name].append(int(val)) 

신용으로 Padraic 커닝햄과 안티 Haapala에!

+0

@Selcuk 제 사과는 있지만 pprint 방법에 대해서는 답변하지 않습니다. –

+0

@ DelbertJ.Nava'pprint' 사용법에 관련된 코드 조각을 추가하기 위해 문제를 편집 할 수 있습니까? –

답변

3

그냥 키를 정렬 값에 액세스하기 위해 키를 사용

for k in sorted(d): 
    print(k,d[k]) 

Adam [12, 34] 
Dave [23, 25] 
Jack [13] 

이 문자열이 str.join 사용으로 활용하려면 다음

for k in sorted(d): 
    print(k," ".join(map(str,d[k]))) 

Adam 12 34 
Dave 23 25 
Jack 13 

가 DICT에 분류 호출하면 정렬 호출하는 것과 동일 dict.keys() 그래서 목록에서 각 정렬 된 키를 사용하여 필요한 순서로 액세스하면됩니다.

+0

또 다른 downvote! –

+0

Doh, join/map/str을 사용하여 언제 편집을 했습니까? ;) –

+0

@ Jan-PhilipGehrcke, 얼마 전에;) –

1
>>> for name, values in sorted(d.items(), key=lambda x: x[0]): 
...  print("%s %s" % (name, " ".join(map(str, values)))) 
... 
Adam 12 34 
Dave 25 23 
Jack 13