亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按第二項(整數值)對元組列表進行排序

按第二項(整數值)對元組列表進行排序

神不在的星期二 2019-06-25 16:31:00
按第二項(整數值)對元組列表進行排序我有一個元組列表,如下所示:[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]我希望按照元組內的整數值對此列表進行升序排序。有可能嗎?
查看完整描述

3 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

嘗試使用key關鍵字與sorted().

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda x: x[1])

key應該是一個函數,該函數標識如何從數據結構中檢索可比較的元素。在您的例子中,它是元組的第二個元素,因此我們訪問[1].

有關優化,請參見jamylak的響應itemgetter(1)的更快版本。lambda x: x[1].


查看完整回答
反對 回復 2019-06-25
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

>>> from operator import itemgetter>>> data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]>>> sorted(data,key=itemgetter(1))[('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]

IMO使用itemgetter在這種情況下,比@cheeken的解決方案更具可讀性。它也更快,因為幾乎所有的計算都將在c側(無雙關意),而不是通過使用lambda.

>python -m timeit -s "from operator import itemgetter; data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=itemgetter(1))"1000000 loops, best of 3: 1.22 usec per loop>python -m timeit -s "data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=lambda x: x[1])"1000000 loops, best of 3: 1.4 usec per loop


查看完整回答
反對 回復 2019-06-25
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

作為一名蟒蛇新手,我只想提一下,如果數據真的是這樣的話:

data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]

然后sorted()將根據元組中的第二個元素自動排序,因為第一個元素都是相同的。


查看完整回答
反對 回復 2019-06-25
  • 3 回答
  • 0 關注
  • 959 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號