1. <track id="5jh9g"><ruby id="5jh9g"></ruby></track>

        深圳幻海軟件技術有限公司歡迎您!

        幻海優品

        Python 指定條件過濾list列表(列表中元素為元組(tuple))方法

        示例列表:

        sample_list = [(5,16,2),(5,10,3),(5,8,1),(21,24,1)]

        上面前3個元組有類似的第一個元素5,在這種情況下,只有第二個元組應該保留,因為它有最大的最后一個元素=> 3。

        輸出結果:

        result = [(5,10,3),(21,24,1)]

        1、使用defaultdict實現

        參考文檔defaultdict 

        from collections import defaultdictsample_list = [(5,16,2),(5,10,3),(5,8,1),(21,24,1)]d = defaultdict(list)for e in sample_list:    d[e[0]].append(e)res = [max(val, key=lambda x: x[2]) for val in d.values()]print(res)

        2、使用itertools.groupby 和 operator.itemgetter 實現

        參考文檔:

        itertools.groupby 

        operator.itemgetter 

        max

        from itertools import groupby
        from operator import itemgetter as ig
        lst = [(5, 10, 3), (21, 24, 1), (5, 8, 1), (5, 16, 2)]
        [max(g, key=ig(-1)) for _, g in groupby(sorted(lst), key=ig(0))]
        # [(5, 10, 3), (21, 24, 1)]

        3、使用itertools.groupby實現

        參考文檔itertools.groupby

        rom itertools import groupbysample_list.sort()print([max(l, key=lambda x: x[-1]) for _, l in groupby(sample_list, key=lambda x: x[0])])

        4、使用operator.itemgetter實現

        參考文檔operator.itemgetter

        from itertools import groupbyfrom operator import itemgettersample_list = [(5,16,2),(5,10,3),(5,8,1),(21,24,1)]sample_list.sort()print([max(l, key=itemgetter(-1)) for _, l in groupby(sample_list, key=itemgetter(0))])

        或者

        from operator import itemgettersample_list = [(5,16,2),(5,10,3),(5,8,1),(21,24,1)]dct = {}for i in sample_list:    if i[0] in dct:        dct[i[0]].append(i)    else:        dct[i[0]] = [i]print([max(v, key=itemgetter(-1)) for v in dct.values()])

        免責聲明:以上內容(如有圖片或視頻亦包括在內)有轉載其他網站資源,如有侵權請聯系刪除

        中文在线天堂中文

        1. <track id="5jh9g"><ruby id="5jh9g"></ruby></track>