只要是可迭代物件都可以用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()) 對字典的鍵
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]) 按二個元素,再第一個 等等。。。
只要是可迭代物件都可以用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]) 按二個元素,再第一個 等等。。。