假设我有这本词典:
{'song': 1, 'like': 1, 'most': 1, 'neer': 1, 'hides': 1, 'live': 1, 'yours': 1, 'come': 2, 'not': 1, 'rage': 1, 'deserts': 1, 'be': 2, 'graces': 1, 'metre': 1, 'rights': 1, 'tomb': 1, 'stretched': 1, 'verse': 1, 'write': 1, 'the': 2, 'beauty': 1, 'all': 1, 'should': 2, 'it': 3, 'rhyme': 1, 'is': 1, 'this': 1, 'in': 4, 'earthly': 1, 'numbers': 1, 'to': 2, 'if': 2, 'my': 3, 'yet': 1, 'less': 1, 'would': 1, 'life': 1, 'an': 1, 'alive': 1, 'number': 1, 'a': 2, 'child': 1, 'say': 1, 'tongue': 1, 'heavenly': 1, 'knows': 1, 'men': 1, 'could': 1, 'half': 1, 'so': 1, 'parts': 1, 'their': 1, 'high': 1, 'with': 2, 'believe': 1, 'such': 1, 'that': 1, 'papers': 1, 'eyes': 1, 'antique': 1, 'age': 2, 'were': 2, 'fresh': 1, 'lies': 1, 'than': 1, 'poet': 1, 'termed': 1, 'old': 1, 'touches': 1, 'and': 5, 'but': 2, 'some': 1, 'of': 4, 'time': 2, 'touched': 1, 'twice': 1, 'will': 1, 'yellowed': 1, 'you': 1, 'though': 1, 'heaven': 1, 'poets': 1, 'truth': 1, 'who': 1, 'i': 1, 'faces': 1, 'which': 1, 'scorned': 1, 'shows': 1, 'filled': 1, 'your': 6, 'true': 1, 'as': 1}
如何通过密钥按字母顺序排列每个键值对?
我尝试过:
for key,value in sorted(freqs.items()):
freqs[key]=value
但这没有做任何事情。我希望它看起来像这样: ab 5 和8 ... 你的2
答案 0 :(得分:3)
Dicts不是排序数据结构,但您可以使用以下方式以排序方式遍历它们:
for key in sorted(freqs.keys()):
print freqs[key]
答案 1 :(得分:1)
collections.OrderedDict
就是为了这个目的。 Example:
>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
答案 2 :(得分:0)
Python中的字典本质上没有排序。如果您要在两个不同的地方两次调用字典,您可以预期它们的顺序不同。除非我理解错误?
答案 3 :(得分:0)
尝试以下方法之一:
treap是树和堆的混合体。它的工作方式类似于排序(按键)字典。
红黑树是一棵树。它也像按字母排序的字典一样工作。
有人说treaps平均比红黑树快,但是treaps在操作时间上有更大的标准偏差。
除了排序外,它们都在O(logn)时间内完成所有操作。他们都保持一切按键,不间断排序。
有时候对标准字典的键进行排序会更好,但在循环内部排序却不是一个好主意。