回覆列表
  • 1 # 使用者1856473604127

    只要是可迭代物件都可以用sorted 。

    sorted(itrearble, cmp=None, key=None, reverse=False)

    =號後面是預設值 預設是升序排序的, 如果想讓結果降序排列,用reverse=True

    最後會將排序的結果放到一個新的列表中, 而不是對iterable本身進行修改。

    eg:

    1, 簡單排序

    sorted("123456") 字串

    ["1", "2", "3", "4", "5", "6"]

    sorted([1,4,5,2,3,6]) 列表

    [1, 2, 3, 4, 5, 6]

    sorted({1:"q",3:"c",2:"g"}) 字典, 預設對字典的鍵進行排序

    [1, 2, 3]

    sorted({1:"q",3:"c",2:"g"}.keys()) 對字典的鍵

    [1, 2, 3]

    sorted({1:"q",3:"c",2:"g"}.values()) 對字典的值

    ["c", "g", "q"]

    sorted({1:"q",3:"c",2:"g"}.items()) 對鍵值對組成的元組的列表

    [(1, "q"), (2, "g"), (3, "c")]

    2, 對元素指定的某一部分進行排序,關鍵字排序

    s = ["Chr1-10.txt","Chr1-1.txt","Chr1-2.txt","Chr1-14.txt","Chr1-3.txt","Chr1-20.txt","Chr1-5.txt"]

    我想要按照-後的數字的大小升序排序。要用到key

    sorted(s, key=lambda d : int(d.split("-")[-1].split(".")[0]))

    ["Chr1-1.txt", "Chr1-2.txt", "Chr1-3.txt", "Chr1-5.txt", "Chr1-10.txt", "Chr1-14.txt", "Chr1-20.txt"]

    這就是key的功能,制定排序的關鍵字,通常都是一個lambda函式,當然你也可以事先定義好這個函式。如果不講這個關鍵字轉化為整型,結果是這樣的:

    sorted(s, key=lambda d : d.split("-")[-1].split(".")[0])

    ["Chr1-1.txt", "Chr1-10.txt", "Chr1-14.txt", "Chr1-2.txt", "Chr1-20.txt", "Chr1-3.txt", "Chr1-5.txt"]

    這相當於把這個關鍵字當做字串了,很顯然,在python中,"2" > "10"

    你可以定製你想要的key, 如 key = lambda x : len(x) 按照序列的長度去排序。key= lambda x : (x[1], x[0]) 按二個元素,再第一個 等等。。。

  • 中秋節和大豐收的關聯?
  • 冒險島弩手加點和技能?