我有属于格式的项目的字典:排序字典由键,值(元组)
{...'key': ('value', '##')...}
其中##
是整数。
现在我要进行排序,并通过关键的价值打印,然后排序和打印,最后排序及列印##的数量。我环顾四周SO和发现,并试图代码类似于此:
print(sorted(aDictionary))
但这只是打印出每个条目的键(但是排序)。我怎样才能按键,值,然后##排序?
我有属于格式的项目的字典:排序字典由键,值(元组)
{...'key': ('value', '##')...}
其中##
是整数。
现在我要进行排序,并通过关键的价值打印,然后排序和打印,最后排序及列印##的数量。我环顾四周SO和发现,并试图代码类似于此:
print(sorted(aDictionary))
但这只是打印出每个条目的键(但是排序)。我怎样才能按键,值,然后##排序?
尝试使用自定义的比较:
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]
您需要使用的物品,而不是密钥(这是迭代的时候默认):
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)