【Python】list去重 且顺序不变

 一、列表去重

if __name__ == '__main__':
    old_arr = [1, 2, 1, 2, 2, 2, 2, 4, 2, 3, 2, 5, 2, 7, 2]
    new_arr = list(set(old_arr))  # 用set去重(去重后顺序是乱的)
    new_arr.sort(key=old_arr.index)  # 新list的排序 用旧list的排序(这样去重后 顺序就不变了)
    print(new_arr)

 

 

二、根据列表中的某个Key去重

def DelRepeat(data: list, 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


if __name__ == '__main__':
    data = [
        {'a': 111},
        {'a': 111},
        {'a': 111},
        {'a': 111},
    ]
    newData = DelRepeat(data, key='a')
    print(newData) # [{'a': 111}]

 

posted @ 2021-01-13 19:06  淡怀  阅读(1156)  评论(0编辑  收藏  举报