2 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
IIUC,用于key限制與前兩個(gè)元素的比較:
sorted(intervals, key=lambda x: x[:2])
輸出:
[[1, 2], [1, 3], [1, 6], [7, 10], [8, 10], [15, 18]]
它適用于子列表中任意數(shù)量的元素:
import random
intv_random = [[*i, random.randint(1, 10000)] for i in intervals]
sorted(intv_random, key=lambda x: x[:2])
輸出:
[[1, 2, 3378],
[1, 3, 5035],
[1, 6, 5732],
[7, 10, 4474],
[8, 10, 5862],
[15, 18, 1176]]

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
我已經(jīng)自己解決了這個(gè)問題。實(shí)際上,lambda 函數(shù)的作用是根據(jù)鍵值進(jìn)行比較。因此,為了實(shí)現(xiàn)我的目標(biāo),我需要用一個(gè)數(shù)字來表示我的 2D 值,其中該值不應(yīng)超過 int 限制,并且應(yīng)根據(jù)優(yōu)先級(jí)表示,在本例中為第 0 列,然后是第 1 列。所以我所做的就像這-
intervals.sort(key=lambda x: x[0]/2 + x[1]/10)
并得到-
[[1, 2], [1, 3], [1, 6], [7, 10], [8, 10], [15, 18]]
一切都運(yùn)轉(zhuǎn)良好。
添加回答
舉報(bào)