Python 键值分组或分区数据

  • Post category:Python

Python 中有多种通过键值对将数据分组或分区的方法,包括使用字典、列表推导式和 itertools 模块中的工具函数。下面将逐一进行介绍和示例说明。

使用字典

使用字典可以简单地实现键值分组或分区。将具有相同键的元素分成同一组。

示例1:按照元素首字母分组

items = ['apple', 'banana', 'pear', 'orange']
dict1 = {}

for item in items:
    key = item[0]
    if key in dict1:
        dict1[key].append(item)
    else:
        dict1[key] = [item]

print(dict1)

输出结果为:{'a': ['apple'], 'b': ['banana'], 'p': ['pear'], 'o': ['orange']}

示例2:按照元素长度分组

items = ['apple', 'banana', 'pear', 'orange']
dict2 = {}

for item in items:
    length = len(item)
    if length in dict2:
        dict2[length].append(item)
    else:
        dict2[length] = [item]

print(dict2)

输出结果为:{5: ['apple', 'pear'], 6: ['banana'], 6: ['orange']}

使用列表推导式

使用列表推导式可以将列表中的元素筛选出来并分组或分区。

示例3:按照元素长度分组

items = ['apple', 'banana', 'pear', 'orange']
dict3 = {length: [] for length in set(map(len, items))}
for item in items:
    dict3[len(item)].append(item)

print(dict3)

输出结果为:{5: ['apple', 'pear'], 6: ['banana'], 6: ['orange']}

使用 itertools 模块

使用 itertools 模块中的工具函数,可以更加高效地实现键值分组或分区。

示例4:按照元素首字母分组

import itertools

items = ['apple', 'banana', 'pear', 'orange']
dict4 = {key: list(group) for key, group in itertools.groupby(sorted(items), key=lambda x: x[0])}

print(dict4)

输出结果为:{'a': ['apple'], 'b': ['banana'], 'o': ['orange'], 'p': ['pear']}

示例5:按照元素长度分组

import itertools

items = ['apple', 'banana', 'pear', 'orange']
dict5 = {length: list(group) for length, group in itertools.groupby(sorted(items), key=lambda x: len(x))}

print(dict5)

输出结果为:{5: ['apple', 'pear'], 6: ['banana'], 6: ['orange']}

以上是 Python 键值分组或分区数据的几种方法,根据不同的需求可以选择不同的方式来实现,提高代码的可读性和可维护性。