以下是一个示例代码,展示如何按照特定的键/值对对字典列表进行聚类。
from collections import defaultdict
from operator import itemgetter
def cluster_dict_list(dict_list, key):
# 创建一个空的默认字典列表,用于聚类
clusters = defaultdict(list)
# 遍历字典列表中的每个字典
for d in dict_list:
# 提取指定键的值
value = d.get(key)
# 将当前字典添加到对应键的聚类中
clusters[value].append(d)
# 按照键的值对聚类进行排序
clusters = dict(sorted(clusters.items(), key=itemgetter(0)))
return clusters
# 示例字典列表
dict_list = [
{'name': 'Alice', 'age': 25, 'category': 'A'},
{'name': 'Bob', 'age': 30, 'category': 'B'},
{'name': 'Charlie', 'age': 35, 'category': 'A'},
{'name': 'Dave', 'age': 40, 'category': 'B'},
{'name': 'Eve', 'age': 45, 'category': 'A'}
]
# 按照 'category' 键进行聚类
clusters = cluster_dict_list(dict_list, 'category')
# 打印聚类结果
for key, value in clusters.items():
print(f"Cluster '{key}':")
for d in value:
print(d)
print()
输出:
Cluster 'A':
{'name': 'Alice', 'age': 25, 'category': 'A'}
{'name': 'Charlie', 'age': 35, 'category': 'A'}
{'name': 'Eve', 'age': 45, 'category': 'A'}
Cluster 'B':
{'name': 'Bob', 'age': 30, 'category': 'B'}
{'name': 'Dave', 'age': 40, 'category': 'B'}
以上代码通过cluster_dict_list
函数将字典列表按照指定的键进行聚类,并返回一个字典,其中键是聚类的值,值是属于该聚类的字典列表。最后,通过遍历聚类结果并打印出来,展示了字典列表的聚类情况。