Python如何从含标签的字典数据中生成标签对元组列表以构建图边集
实现思路
- 先统计每对无序标签组合共同出现的次数:对每个title对应的标签组,生成所有长度为2的无序标签组合,累加每对的出现次数
- 筛选出共同出现次数≥2的标签对,即为最终的边集
完整代码
from itertools import combinations from collections import defaultdict # 示例输入数据 data = [ { 'title': 'title1', 'tags': ['tag1', 'tag2', 'tag3'] }, { 'title': 'title2', 'tags': ['tag1','tag2'] }, { 'title': 'title3', 'tags': ['tag2','tag3'] } ] # 统计标签对共现次数 pair_count = defaultdict(int) for item in data: tags = item['tags'] # 生成当前标签组所有无序2元素组合,先排序保证同组标签对顺序统一 for pair in combinations(sorted(tags), 2): pair_count[pair] += 1 # 筛选共现≥2次的标签对作为边集 edge_list = [pair for pair, cnt in pair_count.items() if cnt >= 2] print(edge_list)
输出结果
[('tag1', 'tag2'), ('tag2', 'tag3')]
补充说明
- 代码中使用
sorted(tags)是为了避免同组标签顺序不同导致('tag2','tag1')和('tag1','tag2')被判定为不同组合的问题 - 如果你需要的标签对顺序可以自定义,调整排序规则即可
内容的提问来源于stack exchange,提问作者user12217822
相关产品推荐
相关产品推荐

