按键排序字典,值(元组)

时间:2013-04-30 15:56:43

标签: python sorting dictionary

我有一个字典,其条目格式为:

{...'key': ('value', '##')...}其中##是一个整数。

现在我想按键排序和打印,然后按值排序和打印,最后按数字##排序和打印。我环顾四周,发现并尝试了与此类似的代码:

print(sorted(aDictionary))

但这只打印出每个条目的键(但 已排序)。如何按键,值排序,然后##?

2 个答案:

答案 0 :(得分:2)

尝试使用自定义比较器:

key1 = lambda (key, (value, hash)): key
key2 = lambda (key, (value, hash)): value
key3 = lambda (key, (value, hash)): hash

使用它像:

print(sorted(aDictionary.items(), key=key1))

BTW以上依赖于tuple unpacking in function parameters;你可以将它改为python 3,如:

key1 = lambda item: item[0][0]
key2 = lambda item: item[1][0]
key3 = lambda item: item[1][1]

答案 1 :(得分:1)

您需要使用项而不是键(迭代时是默认值):

print(sorted(x.iteritems()))

您可能也对OrderedDict感兴趣:http://docs.python.org/2/library/collections.html#collections.OrderedDict

在这种情况下,默认排序可能会有效,但您可能需要自定义key方法:

key = lambda (k, (v0, v1)): (k, v0, v1)
sorted(x.iteritems(), key=key)