美文网首页
2020-04-04-python函数迭代器

2020-04-04-python函数迭代器

作者: 陆寒晨 | 来源:发表于2020-04-04 16:16 被阅读0次

itertools.groupby函数,对dic类型的值进行分组,但谨记,分组前需要排序
方法一:
对元组分组:

import itertools
from operator import itemgetter

lst_data = [(1, 2), (2, 3), (1, 4), (5, 5), (3, 4), (2, 6)]
# soo = sorted(lst_data, key=itemgetter(0))
soo = sorted(lst_data, key=lambda x: x[0])
ss = itertools.groupby(soo, key=itemgetter(0))
for k, v in ss:
    print(k, [i for i in v])
#######################################
# 输出:
1 [(1, 2), (1, 4)]
2 [(2, 3), (2, 6)]
3 [(3, 4)]
5 [(5, 5)]

Process finished with exit code 0

方法二,对字典分组:

d1 = {'name': 'zhangsan', 'age': 20, 'country': 'China'}
d2 = {'name': 'wangwu', 'age': 19, 'country': 'USA'}
d3 = {'name': 'lisi', 'age': 22, 'country': 'JP'}
d4 = {'name': 'zhaoliu', 'age': 22, 'country': 'USA'}
d5 = {'name': 'pengqi', 'age': 22, 'country': 'USA'}
d6 = {'name': 'lijiu', 'age': 22, 'country': 'China'}
lst_dic = [d1, d2, d3, d4, d5, d6]
lst_dicso = sorted(lst_dic, key=itemgetter('country')) # 排序
#lst_dicso = sorted(lst_dic, key = lambda x : x['country'])  # 排序
group_dicso = itertools.groupby(lst_dicso,key=itemgetter('country')) # 分组
for k,v in group_dicso:
    print(k, [i for i in v])

############################################################
# 输出:
China [{'name': 'zhangsan', 'age': 20, 'country': 'China'}, {'name': 'lijiu', 'age': 22, 'country': 'China'}]
JP [{'name': 'lisi', 'age': 22, 'country': 'JP'}]
USA [{'name': 'wangwu', 'age': 19, 'country': 'USA'}, {'name': 'zhaoliu', 'age': 22, 'country': 'USA'}, {'name': 'pengqi', 'age': 22, 'country': 'USA'}]

Process finished with exit code 0

【注意】

itemgetter函数用于指定获取迭代对象中的哪些维度的数据;或者可以用来指定迭代器排序的域,等价于lambda表达式。

相关文章

  • 2020-04-04-python函数迭代器

    itertools.groupby函数,对dic类型的值进行分组,但谨记,分组前需要排序方法一:对元组分组: 方法...

  • python-生成器、迭代器、yield

    1、迭代器:就是可迭代对象。 迭代器是指用iter(obj)函数返回的对象(实例)迭代器是指用next(it)函数...

  • 5、迭代器实现

    闭包实现迭代器 迭代函数实现迭代器 --1,调用迭代函数,(把状态变量和控制变量当做参数传递给迭代函数) 状态变...

  • 迭代器

    创建一个迭代器,接收任意多个函数参数 创建多个异步的函数,注入到迭代器中

  • 迭代器

    参考文献: PEP 234 迭代器 一、迭代器 数学中的迭代可以指函数迭代的过程,即反复地运用同一函数计算,前一次...

  • 内置函数zip

    1、函数定义:zip(*iterables,strict=False) 在多个迭代器上并行迭代,从每个迭代器返回一...

  • C++笔记九(STL与泛型编程)

    本周内容(1)迭代器的分类(category)(2)迭代器分类对算法的影响(3)STL算法(4)仿函数/函数对象(...

  • Python协程

    迭代器 带yield的函数,就是一个迭代器 启动一个迭代器,要么执行next(iterator), 要么itera...

  • 第九周 笔记

    用typeid可以直接打印出迭代器的类型,老师用的是函数重载实现迭代器的打印,迭代器的类型都是迭代器里里的一个属性...

  • ES6 ES7 语法特性与规范

    生成器函数 说生成器之前先讲迭代器,下面就是迭代器的简单范例,迭代器代表一个流程,迭代器的每次next()调用,会...

网友评论

      本文标题:2020-04-04-python函数迭代器

      本文链接:https://www.haomeiwen.com/subject/lmbdphtx.html