合并去重

 

# 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)

 

posted @ 2021-05-24 11:52  whitesky-root  阅读(91)  评论(0编辑  收藏  举报