我有一个列表a = [(1,'a'), (1,'b'), (2,'c')]
,我希望获得此列表:[(2,'c'), (1,'a'), (1,'b')]
如果我这样做:
sorted(a, reverse=True)
我只能得到:
[(2,'c'), (1,'b'), (1,'a')]
如何获得我想要的清单?
答案 0 :(得分:1)
如果要保留原始列表中的排序顺序,但只按第一个元素排序,则可以
>>> from operator import itemgetter
>>> a = [(1,'a'), (1, 'x'), (1,'b'), (2,'c')]
>>> sorted(a, key=itemgetter(0), reverse=True)
[(2, 'c'), (1, 'a'), (1, 'x'), (1, 'b')]
在Python中,sort
和sorted
函数使用TimSort算法,这是一种稳定的排序。稳定意味着对于那些相互比较相等的元素保留原始的相对排序。
如果你想同时按多个标准排序,你可以在整数的情况下使用一个函数作为键,返回相反数量的反转,但一般情况下您可以通过按相反的顺序排序几次来完成此操作:
>>> b = sorted(a, key=itemgetter(1)) # sort by second element, ascending
>>> b.sort(key=itemgetter(0), reverse=True) # sort by first element, descending
>>> b
[(2, 'c'), (1, 'a'), (1, 'b'), (1, 'x')]
答案 1 :(得分:1)
您可以使用<script>
$(document).ready(function () {
var dateval = $('#<%= txtdate.ClientID %>').val();
if (dateval != '') {
var options = {
selectedDate: dateval,
size: 'medium',
width: 960
}
} else {
var options = {
size: 'medium',
width: 960
}
}
$('#paginator').datepaginator(options);
$('#paginator').on('selectedDateChanged', function (event, date) {
$('#<%= txtdate.ClientID %>').val(date.substring(4, 12));
});
});
</script>
函数lambda
来实现此目的:
sorted
这将按索引0处的值的降序对列表进行排序,然后按索引1处的值的升序排序
答案 2 :(得分:0)
试试这个,
from operator import itemgetter
sorted(a, key=itemgetter(0),reverse=True)
<强>结果强>
[(2, 'c'), (1, 'a'), (1, 'b')]