按字母顺序排列的字典键[重复]

Posted

技术标签:

【中文标题】按字母顺序排列的字典键[重复]【英文标题】:Dictionary keys in alphabetical order [duplicate] 【发布时间】:2015-04-07 20:24:16 【问题描述】:

在我之前的问题中,我发现了如何在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!

【问题讨论】:

@Selcuk 我很抱歉,但这并不能回答 pprint 方法。 @DelbertJ.Nava 您能否编辑问题以围绕pprint 用法添加相关代码片段? 【参考方案1】:

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

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() 上排序的调用相同,因此我们只需要使用列表中每个现在排序的键以所需的顺序访问。

【讨论】:

大声笑又投反对票! 呵呵,你什么时候用 join/map/str 进行编辑的? ;) @Jan-PhilipGehrcke,不久前 ;) 不过,我会留下我的解决方案。它具有较少的字典查找(这在这里实际上并不重要......)。 @Jan-PhilipGehrcke 只是写信告诉你,虽然使用了物品,但我采用了不同的方法,但我打算使用键输入更少的内容。不确定哪个实际上更有效【参考方案2】:
>>> 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

【讨论】:

以上是关于按字母顺序排列的字典键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary 按字母顺序排序[重复]

python怎么对字典进行排序

Jquery排序 - 按字母顺序排列图像[重复]

按自然顺序对字典键进行排序[重复]

获得列表中重复次数最多的名称,如果出现平局,则按字母顺序排列第一个

优化一个简单的缺失词算法[重复]