2

我有一本包含以下格式条目的字典:

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

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

print(sorted(aDictionary))

但这只会打印出每个条目的键(但它排序的)。如何按键、值和## 排序?

4

2 回答 2

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))

顺便说一句,以上依赖于函数参数中的元组解包;您可以将其改写为 python 3,例如:

key1 = lambda item: item[0][0]
key2 = lambda item: item[1][0]
key3 = lambda item: item[1][1]
于 2013-04-30T16:01:44.497 回答
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)
于 2013-04-30T16:01:15.810 回答