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 键值分组或分区数据的几种方法,根据不同的需求可以选择不同的方式来实现,提高代码的可读性和可维护性。