合并去重
# 2个列表中的字典,根据字典的指定字段:tag_info去重 a = [{'version': '13', 'tag_info': 'tag:shifou-3232661', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, {'version': '12', 'tag_info': 'tag:shifou-3232662', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, {'version': '11', 'tag_info': 'tag:shifou-3232663', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, {'version': '5', 'tag_info': 'tag:shifou-3232664', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}] b = [{'version': '133', 'tag_info': 'tag:shifou-3232666', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, {'version': '122', 'tag_info': 'tag:shifou-3232666', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, {'version': '113', 'tag_info': 'tag:shifou-3232663', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, {'version': '54', 'tag_info': 'tag:shifou-3232664', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}] # 输出 # c = [ # {'tag_info': 'tag:shifou-323266', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'}, # {'tag_info': 'tag:shifou-323266', 'commit_id': '720eb278b7efe5b259413190a75c6f2be984bade'} # ] tag_info_b = [ele["tag_info"] for ele in b] result = [] # 求a、b的交集: for ele in a: tag_info = ele["tag_info"] if tag_info in tag_info_b: result.append(ele) print(result)
# 一个列表中包含多个字典,根据字典key去重 # 待合并的项目信息,不同需求中可能包含重复的项目(不同需求包含相同project_id), 但分支不同,需要把其中每个分支都merge到master pc_values = ProjectConfig.objects.filter(demand_id__in=demand_id_lst).values("demand_id", "branch", "project_id", "project_name", "git_url", "env", "stage") # 合并分支前按project_id、branch去重, 正常来说:不同需求的项目,分支一定不同 result = [] _tmp = [] for i in pc_values: unique_key = str(i["project_id"]) + i["branch"] if unique_key not in _tmp: result.append(i) _tmp.append(unique_key)