基于子阵列第二元素的Python排序多维数组

时间:2013-11-20 15:13:30

标签: python arrays list sorting multidimensional-array

我有一个这样的数组:

[['G', 10], ['A', 22], ['S', 1], ['P', 14], ['V', 13], ['T', 7], ['C', 0], ['I', 219]]

我想根据第二个元素按降序排序。 理想的输出是:

[['I', 219], ['A', 22], ['P', 14], ... ]

4 个答案:

答案 0 :(得分:46)

list.sortsorted接受可选的key参数。 key函数用于生成比较密钥。

>>> sorted(lst, key=lambda x: x[1], reverse=True)
[['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]

>>> sorted(lst, key=lambda x: -x[1])
[['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]

>>> import operator
>>> sorted(lst, key=operator.itemgetter(1), reverse=True)
[['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]

答案 1 :(得分:9)

使用ImageSource = imageList[2];

    private BitmapImage imageSource = null;
    public BitmapImage ImageSource
    {
        get
        {
            return imageSource;
        }
        set
        {
            imageSource = value;
            // Call OnPropertyChanged whenever the property is updated
            OnPropertyChanged("MessagePerSec");
        }
    }

输出:[[1,3,5],[17,233,1],[2,511,7]]

itemgetter也可用于按多个子阵列排序。

答案 2 :(得分:0)

x= [[8, 9, 7],
    [1, 2, 3],
    [5, 4, 3],
    [4, 5, 6]]
x.sort(cmp=lambda x,y: cmp(x[0],y[0]))
print x

答案 3 :(得分:0)

执行以下操作:

在第二列的基础上按降序对多维数组进行排序:

list_name.sort(key=lambda x:x[1],reverse=True)