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

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

如何在 Python3 中對復雜列表進行自然排序?

如何在 Python3 中對復雜列表進行自然排序?

慕碼人8056858 2022-06-14 09:49:12
我可以對簡單列表進行自然排序,也可以對復雜列表中的特定鍵進行正常排序。我需要對復雜列表中的鍵進行自然排序。鑒于此程序:import redef atof(text):    try:        retval = float(text)    except ValueError:        retval = text    return retvaldef natural_keys(text):    '''    alist.sort(key=natural_keys) sorts in human order    http://nedbatchelder.com/blog/200712/human_sorting.html    (See Toothy's implementation in the comments)    float regex comes from https://stackoverflow.com/a/12643073/190597    '''    return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]alist=[    "something1",    "something2",    "something10.0",    "something1.25",    "something1.105"]alist.sort(key=natural_keys)print("alist:")for i in alist: print(i)from operator import itemgetterblist=[    ['a', "something1"],    ['b', "something2"],    ['c', "something10.0"],    ['d', "something1.25"],    ['e', "something1.105"]]blist.sort(key=itemgetter(1))print("\nblist:")for i in blist: print(i[1])我得到這些結果:alist:something1something1.105something1.25something2something10.0blist:something1something1.105something1.25something10.0something2如何讓 blist 排序與 alist 相同?
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

您可以使用 alambda而不是itemgetter.

blist.sort(key=lambda x: natural_keys(x[1]))


查看完整回答
反對 回復 2022-06-14
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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