Python代码阅读(第6篇):根据给定的函数对列表中的元素进行分组

本文介绍了Python中的group_by函数,用于对列表元素进行分组。通过字典和列表推导式,该函数根据给定的分组函数将列表元素组织成字典,每个键对应一个元素列表。示例展示了如何根据数学地板函数和字符串长度对数据进行分组,帮助Python初学者更好地理解代码逻辑。
部署运行你感兴趣的模型镜像

Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码

本篇阅读的代码实现了使用给定的分组函数对列表中的元素进行分组的功能。

本篇阅读的代码片段来自于30-seconds-of-python。

group_by

def group_by(lst, fn):
  return {key : [el for el in lst if fn(el) == key] for key in map(fn, lst)}

# EXAMPLES
from math import floor
group_by([6.1, 4.2, 6.3], floor) # {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) # {3: ['one', 'two'], 5: ['three']}

group_by接收一个列表和一个函数fn,返回一个分组字典。函数中的字典推导式使用mapfn应用于列表中的元素上以生成返回字典的key。同时使用列表推导式生成生成每个key对应的分组列表。

字典推导式有{ key_expr: value_expr for value in collection if condition }这样的形式。group_by函数中字典推导式的value_expr是一个列表,该列表使用了列表推导式来生成。即

{ key_expr: [x for x in collection2 if condition2] for value in collection1 if condition1 }

同时,我们可以看到根据group_by代码中的字典推导式,可能计算出key相同的项,根据Pyrhon中字典的类型的规则,key相同的,只保留最新的key-value对。实际上当key相同时,value值也一样。[el for el in lst if fn(el) == key]推导式的for语句中只有key一个变量。

>>> d = {'one': 1, 'two': 2, 'three': 3, 'two': 2}
>>> d
{'one': 1, 'two': 2, 'three': 3}
>>> d = {'one': 1, 'two': 2, 'three': 3, 'two': 22}
>>> d
{'one': 1, 'two': 22, 'three': 3}
>>>

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值