Python 相当于 Scala groupby

标签 python scala

我有一个对象列表,我想要一个函数,可以将该列表与对该列表中的项目进行操作的函数一起使用,并根据将该函数应用于该项目的结果生成一个带有键的字典,值是具有该键的项目列表。

示例:

def group_by(iterable: Iterable[A], f: Callable[A, B]) -> Dict[B, List[A]]:
    ???

lst = [(1,2), (3,4), (1,3)]
result = group_by(lst, lambda i: i[0])
result == {1: [(1,2), (1,3)],
           3: [(3,4)]}

itertools.groupby 很接近,但我不想要求对我的输入进行排序。

最佳答案

这是使用 defaultdict 的方法:

from collections import defaultdict
def group_by(iterable, f):
    results = defaultdict(list)
    for x in iterable:
        results[f(x)].append(x)
    return results

关于Python 相当于 Scala groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789591/

相关文章:

json - Playframework Scala Specs2 JSON 匹配器

java - 如何完全填充 Ebean 实体?

scala - flatMap 与 map 的效率,然后在 Spark 中减少

python - 在命令输出中找到 b''?

python - Pandas 数据帧: Getting tuples groups separated by 'NaN' in a column

python - Django 字段选择两个值之间的范围?

c# - 如何在C#中模拟元组和集合?

scala - 带状态的函数式监听器

java - 语义网络语言基础

python - 显示从 zip 存档 python 读取的图像