使用元组和operator.itemgetter对字典进行排序

时间:2012-07-26 00:03:25

标签: python numpy

我在最后一个里程碑之前准备合适的输出。我认为这非常简单,但我的方法并不奏效:

给出像

这样的字典
mydict = {x1: (val1, dist1, (lat1, lon1)), x2: (val2, dist2, (lat2, lon2)), ...}

我尝试在数组中以嵌套方式对其进行排序,首先使用"值"如果等于,则排序" dist"。

然而,我完成了我的作业并尝试使用这种方式:

import operator
s = sorted(mydict.iteritems(), key=operator.itemgetter(1))

问题是,如果排序方法适用于元组,那将非常简单,因为它已经是正确的顺序。

不幸的是我得到了:

  

'列表'对象不可调用

你有什么想法吗?

2 个答案:

答案 0 :(得分:5)

是否可以用名单值覆盖名称sorted

答案 1 :(得分:0)

  

问题是如果排序方法适用于元组,那将非常容易

sorted()在元组列表中完美运行,在这种情况下,它使用lexicographic ordering

  

(a,b)≤(a',b')当且仅当a< a'或(a = a'和b≤b')。

这可以扩展到任意数量的维度。

>>> sorted([(10, 1), (5, 3), (6, 5), (3, 2), (5, 10)])
[(3, 2), (5, 3), (5, 10), (6, 5), (10, 1)]