如何去除Python字典中列表值的重复元素并生成新字典?
处理字典列表值的重复元素
这里有几种实用的方法可以实现你的需求,根据场景选择即可:
方法1:手动遍历去重(兼容所有Python版本,保留元素顺序)
这种方法直观可控,手动记录已出现的元素,确保每个元素只保留第一次出现的实例:
duties = { 0: ["Submit an assignment","Submit an assignment"], 1: ["Submit an assignment", "Finish a book review"] } duties_without_duplicates = {} for key, items in duties.items(): seen = set() unique_list = [] for item in items: if item not in seen: seen.add(item) unique_list.append(item) duties_without_duplicates[key] = unique_list # 输出目标结果 print(duties_without_duplicates)
方法2:利用字典有序性简化代码(Python 3.7+,保留顺序)
Python 3.7及以上版本的字典会保留键的插入顺序,借助dict.fromkeys()可以快速实现去重,再转回列表即可:
duties = { 0: ["Submit an assignment","Submit an assignment"], 1: ["Submit an assignment", "Finish a book review"] } duties_without_duplicates = { key: list(dict.fromkeys(items)) for key, items in duties.items() }
一行推导式就能完成,代码简洁且能维持原列表的元素顺序。
方法3:集合转列表(不关心顺序时用,速度最快)
如果不需要保留原列表的元素顺序,直接用集合去重是效率最高的方式:
duties = { 0: ["Submit an assignment","Submit an assignment"], 1: ["Submit an assignment", "Finish a book review"] } duties_without_duplicates = { key: list(set(items)) for key, items in duties.items() }
注意:集合是无序结构,转成列表后元素顺序会和原列表不一致,适合对顺序无要求的场景。
内容的提问来源于stack exchange,提问作者Mdick
相关产品推荐
相关产品推荐

