python按照list中字典的某key去重

2020-10-11 15:00:10

python按照list中字典的某key去重

一、需求說明

當我們寫爬蟲的時候,經常會遇到json格式的資料,它通常是如下結構:

data = [{'name':'小K','score':100},
        {'name':'小J','score':98},
        {'name':'小Q','score':95},
        {'name':'小K','score':100}]

很顯然名字為小K的資料重複了,我們需要進行去重。通常對於list的去重,我們可以用set()函數,即:

data = list(set(data))

然而,執行之後你會發現它報錯了:
在這裡插入圖片描述
list裡的資料不能是dict型別,那麼該怎麼辦呢?

二、我的解決方案

定義一個去重的函數即可,根據裡面的某個key,對資料進行篩選去重:

def DelRepeat(data,key):
    new_data = [] # 用於儲存去重後的list
    values = []   # 用於儲存當前已有的值
    for d in data:
        if d[key] not in values:
            new_data.append(d)
            values.append(d[key])
    return new_data

引數data為需要去重的list,key為去重的健(即按照哪個key來去重),去重後結果為:

[{'name': '小K', 'score': 100},
 {'name': '小J', 'score': 98},
 {'name': '小Q', 'score': 95}]

成功去重!

寫在最後

最後,感謝各位大大的耐心閱讀~

創作不易,大俠請留步… 動起可愛的雙手,來個贊再走唄 (๑◕ܫ←๑)