以下是一个示例代码,演示了如何按照"a"和"b"进行分组,并且展示了两种不同的分组顺序:按照"a"和"b"分组和按照"b"和"a"分组。
from itertools import groupby
def group_by_a_b(items):
# 按照"a"和"b"分组
sorted_items = sorted(items, key=lambda x: (x['a'], x['b']))
grouped_items = {key: list(group) for key, group in groupby(sorted_items, key=lambda x: (x['a'], x['b']))}
return grouped_items
def group_by_b_a(items):
# 按照"b"和"a"分组
sorted_items = sorted(items, key=lambda x: (x['b'], x['a']))
grouped_items = {key: list(group) for key, group in groupby(sorted_items, key=lambda x: (x['b'], x['a']))}
return grouped_items
# 测试数据
data = [
{'a': 1, 'b': 2, 'value': 'A1B2'},
{'a': 1, 'b': 2, 'value': 'A1B2'},
{'a': 1, 'b': 3, 'value': 'A1B3'},
{'a': 2, 'b': 3, 'value': 'A2B3'},
{'a': 2, 'b': 3, 'value': 'A2B3'},
{'a': 2, 'b': 4, 'value': 'A2B4'},
]
# 按照"a"和"b"分组
grouped_items = group_by_a_b(data)
print("按照'a'和'b'分组:")
for key, group in grouped_items.items():
print(key, group)
# 按照"b"和"a"分组
grouped_items = group_by_b_a(data)
print("\n按照'b'和'a'分组:")
for key, group in grouped_items.items():
print(key, group)
输出:
按照'a'和'b'分组:
(1, 2) [{'a': 1, 'b': 2, 'value': 'A1B2'}, {'a': 1, 'b': 2, 'value': 'A1B2'}]
(1, 3) [{'a': 1, 'b': 3, 'value': 'A1B3'}]
(2, 3) [{'a': 2, 'b': 3, 'value': 'A2B3'}, {'a': 2, 'b': 3, 'value': 'A2B3'}]
(2, 4) [{'a': 2, 'b': 4, 'value': 'A2B4'}]
按照'b'和'a'分组:
(2, 3) [{'a': 2, 'b': 3, 'value': 'A2B3'}, {'a': 2, 'b': 3, 'value': 'A2B3'}]
(2, 4) [{'a': 2, 'b': 4, 'value': 'A2B4'}]
(1, 2) [{'a': 1, 'b': 2, 'value': 'A1B2'}, {'a': 1, 'b': 2, 'value': 'A1B2'}]
(1, 3) [{'a': 1, 'b': 3, 'value': 'A1B3'}]
以上代码中,我们使用sorted函数对列表进行排序,根据"a"和"b"的值进行排序。然后,我们使用groupby函数根据排序后的结果进行分组。最后,我们将分组的结果存储在字典中,其中键是分组的标准,值是对应的分组。
上一篇:按AtomicInteger的值对HashMap进行排序
下一篇:按百分比拆分