>>from itertools import groupby >>keyfunc = lambda x : x > 500 >>obj = dict(groupby(range(1000), keyfunc)) >>list(obj[True]) [999] >>list(obj[False]) []
__默认情况下,条件(x > 500)的 范围(1000) 显然是排序的。 我期待的数字0到999在一个被分组 的dict 由条件(X> 500)。但是结果字典只有999个 。其他数字在哪里?任何人都可以解释这里发生了什么吗?
从文档:
返回的组本身就是一个与共享底层可迭代对象的迭代器groupby()。因为源是共享的,所以当groupby()对象前进时,先前的组将不再可见。因此,如果以后需要该数据,则应将其存储为列表[。]。
groupby()
并且您将迭代器存储在其中obj并在以后实现。
obj
In [21]: dict((k, list(g)) for k, g in groupby(range(10), lambda x : x > 5)) Out[21]: {False: [0, 1, 2, 3, 4, 5], True: [6, 7, 8, 9]}