我想排序一個列表,它有一個單詞和一個數字組成的元組。如何雙向排序python列表,按降序排列數字,按升序排列字母排序?
my_list = [('hello',25), ('hell',4), ('bell',4)]
我該如何解決這(使用lambda可能),這樣我得到
[('hello',25), ('bell',4), ('hell',4)]
我想排序一個列表,它有一個單詞和一個數字組成的元組。如何雙向排序python列表,按降序排列數字,按升序排列字母排序?
my_list = [('hello',25), ('hell',4), ('bell',4)]
我該如何解決這(使用lambda可能),這樣我得到
[('hello',25), ('bell',4), ('hell',4)]
最簡單的方法就是利用sort stability做那種在兩個通道:
>>> lot = [('hello', 25), ('hell', 4), ('bell', 4)]
>>> lot.sort(key=lambda r: r[0])
>>> lot.sort(key=lambda r: r[1], reverse=True)
>>> lot
[('hello', 25), ('bell', 4), ('hell', 4)]
您也可以使用sorted():
>>> lot = [('hello', 25), ('hell', 4), ('bell', 4)]
>>> sorted(sorted(lot, key=lambda r: r[0]), key=lambda r: r[1], reverse=True)
[('hello', 25), ('bell', 4), ('hell', 4)]
這是在Python的Sorting Howto指南中推薦的技術。
您可以將key
參數內的變換轉換爲sorted
以實現所需的排序。
x = [('hello',25),('hell',4),('bell',4)]
sorted(x, key = lambda tup: (-tup[1], tup[0]))
Out[15]: [('hello', 25), ('bell', 4), ('hell', 4)]
儘管在這種情況下可行,但它不是一種適用於其他情況的通用解決方案。 (例如,您不能使用降序排列字符串的技術;它只適用於數字)。 – 2014-09-04 03:19:20
你能解釋一下你面臨的問題嗎? – Nilesh 2014-09-04 03:07:00