我可以对简单列表进行自然排序,也可以对复杂列表中的特定键进行正常排序。我需要对复杂列表中的键进行自然排序。鉴于此程序: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 相同?
添加回答
举报
0/150
提交
取消