如何通过伪复合键对字典进行排序?

时间:2011-08-15 14:15:18

标签: python

我有一本字典:

test = {}
test[(1,2)] = 1
test[(4,3)] = 1
test[(1,4)] = 1

如何按“伪复合键”排序:元组的第一个元素和元组的第二个元素之后?

3 个答案:

答案 0 :(得分:7)

test = {}
test[(1,2)] = 1
test[(4,3)] = 2
test[(1,4)] = 3

print sorted(test.iteritems())

会给你:

[((1, 2), 1), ((1, 4), 3), ((4, 3), 2)]

如果你想把它们当作字典:

import OrderedDict
sorted_test = OrderedDict(sorted(test.iteritems()))

你有一本按字母键排序的字典。

这一切都有效,因为默认情况下,元组按您所描述的那样排序。

答案 1 :(得分:1)

无法按定义对字典进行排序。您可以做的是获取密钥列表,对其进行排序,然后按给定顺序引用字典。例如:

test = {}
test[(1,2)] = 1
test[(4,3)] = 2
test[(1,4)] = 3

keys = sorted(test.keys()) # nothing fancy, default sort
for key in keys:
   print test[key]

>>> 1
>>> 3
>>> 2

答案 2 :(得分:0)

这完全取决于你想要什么。如果您希望按顺序排序测试键,则只需

sorted(test)

如果您想要排序键的值,请执行

[test[key] for key in sorted(test)]