如何基于指定键移除字典列表中的重复项
字典列表按指定键去重(保留首次出现项)
针对你提出的需求,这里提供两种Python实现方案,均能基于指定键(如示例中的Name)去重并保留第一个出现的字典项:
方法一:遍历+集合记录(兼容所有Python版本)
通过遍历原列表,用集合记录已经处理过的键值,只保留首次出现的字典项,逻辑直观且兼容性强:
# 修正语法后的输入列表(Python字典键需为字符串) lst = [ {"Name": "a", "age": 2}, {"Name": "b", "age": 7}, {"Name": "a", "age": 23}, {"Name": "c", "age": 16}, ] seen_keys = set() unique_list = [] for item in lst: current_key = item["Name"] if current_key not in seen_keys: seen_keys.add(current_key) unique_list.append(item) print(unique_list)
输出结果:
[{'Name': 'a', 'age': 2}, {'Name': 'b', 'age': 7}, {'Name': 'c', 'age': 16}]
方法二:字典推导式(Python 3.7+适用)
利用Python 3.7及以上版本字典会保留插入顺序的特性,用指定键作为字典的键,自动去重后提取值即可,代码更简洁:
lst = [ {"Name": "a", "age": 2}, {"Name": "b", "age": 7}, {"Name": "a", "age": 23}, {"Name": "c", "age": 16}, ] # 以Name为键构建字典,重复键会被后续项覆盖,但因为保留插入顺序,最终保留的是首次出现的项 unique_dict = {item["Name"]: item for item in lst} # 提取字典的值转为列表 unique_list = list(unique_dict.values()) print(unique_list)
输出结果与方法一完全一致。
内容的提问来源于stack exchange,提问作者PlatinMavi
相关产品推荐
相关产品推荐

