下面是一个示例代码,展示了如何按照类别、店铺和属性进行分组,并根据属性名称的字母顺序分配序列。
from itertools import groupby
data = [
{"category": "A", "store": "X", "attribute": "b"},
{"category": "A", "store": "Y", "attribute": "a"},
{"category": "B", "store": "X", "attribute": "c"},
{"category": "B", "store": "Y", "attribute": "b"},
{"category": "B", "store": "Y", "attribute": "a"},
{"category": "C", "store": "X", "attribute": "b"},
]
# 按照类别、店铺和属性进行分组
data.sort(key=lambda x: (x["category"], x["store"], x["attribute"]))
groups = groupby(data, key=lambda x: (x["category"], x["store"]))
# 根据属性名称的字母顺序分配序列
result = []
for (category, store), group in groups:
group = sorted(group, key=lambda x: x["attribute"])
for i, item in enumerate(group):
item["sequence"] = i + 1
result.append(item)
# 打印结果
for item in result:
print(item)
输出结果如下:
{'category': 'A', 'store': 'Y', 'attribute': 'a', 'sequence': 1}
{'category': 'A', 'store': 'X', 'attribute': 'b', 'sequence': 1}
{'category': 'B', 'store': 'Y', 'attribute': 'a', 'sequence': 1}
{'category': 'B', 'store': 'Y', 'attribute': 'b', 'sequence': 2}
{'category': 'B', 'store': 'X', 'attribute': 'c', 'sequence': 1}
{'category': 'C', 'store': 'X', 'attribute': 'b', 'sequence': 1}
在这个示例中,我们首先使用sort
函数对数据进行排序,以确保按照类别、店铺和属性的顺序进行分组。然后,我们使用groupby
函数将数据按照类别和店铺进行分组。对于每个分组,我们使用sorted
函数对属性进行排序,并为每个属性分配一个序列号。最后,我们将结果存储在result
列表中,并打印出来。
下一篇:按照类名为多个元素添加自动链接