X = ["v", "g", "r", "a", "f"]
Y = [("v", 7), ("f", 3), ("r", 3), ("g", 7), ("a", 2)]
我想首先根據數字升序對串列Y進行排序,然后根據X中的字母對排序后的Y進行排序
我正在尋找的答案是:
[('a', 2), ('r', 3), ('f', 3), ('v', 7), ('g', 7)]
- 按升序排列數字。
- 'r' 和 'f' 的數量是 3,我想根據 X 對它們進行排序,首先是 r 然后是 f。
uj5u.com熱心網友回復:
僅使用串列推導式:
Y = [(x, y) for x, y, _ in sorted([(x, y, X.index(x)) for x, y in Y], key=lambda x: x[1:])]
在內部理解中,Y 中的每個元素都有第三個數字——x 中的索引。然后你對兩個 indeces 進行排序,并使用外部理解回傳原始形式。
uj5u.com熱心網友回復:
你可以使用sorted函式,就像下面一樣。
sorted(Y, key=lambda a: (a[1], X.index(a[0])))
鍵的順序是(基于 Y 的數字,基于 X 的字符)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381469.html
