字典键按字母顺序排列

时间:2015-02-07 20:32:39

标签: python dictionary printing

在我之前的问题中,我发现了如何在Reading data separated by colon per line in Python的帖子中将一些同事的分数拖到一本字典中。 现在,如果我想排列字典以使密钥按名称排序,那么AdamDaveJack的分数将按此顺序显示。

我使用了以下方法:

sorted(self.docs_info.items)

但这没有任何回报。我还希望它以格式

返回IDLE
Adam 12 34
Dave 25 23
Jack 13

我尝试使用pprint方法,但这也没有用。 我该如何解决这个问题?

我之前的代码(已完成)如下所示:

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 Cunningham和Antti Haapala!

2 个答案:

答案 0 :(得分: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()上调用排序相同,因此我们只需要使用列表中的每个排序键来按所需顺序访问。

答案 1 :(得分: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