关于python:按字母顺序排列的字典键

Dictionary keys in alphabetical order

本问题已经有最佳答案,请猛点这里访问。

在上一个问题中,我发现了如何将我的同事的一些分数拖到一个字典中,该字典位于用冒号分隔的Python每行阅读后数据中。现在,如果我想排列字典,使键按名称顺序排列,那么AdamDaveJack的分数将按这个顺序出现。

我使用了以下方法:

1
sorted(self.docs_info.items)

但这没有回报。我还希望它以格式返回到空闲状态

1
2
3
Adam 12 34
Dave 25 23
Jack 13

我试着用pprint方法,但也没用。我怎么修这个?

我以前的代码(已完成)显示如下:

1
2
3
4
5
6
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!


只需对键进行排序并使用键访问值:

1
2
3
4
5
6
for k in sorted(d):
    print(k,d[k])

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

要获取字符串,请使用str.join

1
2
3
4
5
6
for k in sorted(d):
    print(k,"".join(map(str,d[k])))

Adam 12 34
Dave 23 25
Jack 13

在dict上排序的调用与在dict.keys()上排序的调用相同,所以我们只需要使用列表中每个现在排序的键就可以按要求的顺序访问。


1
2
3
4
5
6
>>> 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