2015-02-07 85 views
2

在我之前的問題中,我發現如何將一些同事的分數拖到Reading data separated by colon per line in Python後的字典中。 現在,如果我想安排字典以便按鍵名稱順序排列,那麼Adam,DaveJack的分數將按該順序出現。按字母順序排列的字典鍵

我用下面的方法:

sorted(self.docs_info.items) 

但不返回任何內容。我也希望它在格式

Adam 12 34 
Dave 25 23 
Jack 13 

我試圖用pprint方法返回到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)) 

以信譽帕德里克·坎寧安和安蒂·哈帕拉!

+0

@Selcuk我的歉意,但是這並不能回答pprint方法。 – 2015-02-07 20:38:17

+0

@ DelbertJ.Nava你可以編輯這個問題來在'pprint'用法中添加相關的代碼片嗎? – 2015-02-07 20:39:49

回答

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.keys()因此,我們只需要使用列表中的每個現在排序的鍵以所需順序訪問。

+0

哈哈又一次downvote! – 2015-02-07 20:41:54

+0

Doh,你什麼時候用join/map/str做了編輯? ;) – 2015-02-07 20:44:51

+0

@ Jan-PhilipGehrcke,不久前;) – 2015-02-07 20:45:14

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