在KNN算法中有对距离进行排序,这里用到

sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)

其中classCount是字典,其包括了标签与计数,即classcount={ 'a': 5, 'b': 3, 'c': 6 }

operator.itemgetter()函数

operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。

a = [1, 2, 3]

>>> b=operator.itemgetter(1)     # 定义函数b,获取对象的第1个域的值

>>> b(a)

2

>>> b=operator.itemgetter(1,0)   # 定义函数b,获取对象的第1个域和第0个的值

>>> b(a)

(2, 1)

注意: operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。

sorted(iterable[, cmp[, key[, reverse]]])函数

Python内置的排序函数sorted可以对list或者iterator进行排序。

参数解释:

(1)iterable指定要排序的list或者iterable;

(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数;如:

students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

sorted(students, key=lambda student : student[2])

(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明;

(4)reverse参数就不用多说了,是一个bool变量,表示升序还是降序排列,默认为false(升序排列),定义为True时将按降序排列。

整理

有了上面的operator.itemgetter函数,也可以用该函数来实现,例如要通过student的第三个域排序,可以这么写:

sorted(students, key=operator.itemgetter(2))

sorted函数也可以进行多级排序,例如要即先根据第二个域排序,再根据第三个域排序。

可以这么写:

sorted(students, key=operator.itemgetter(1,2))

items()和iteritems()

items()返回的是列表对象,而iteritems()返回的是iterator对象。例如:

print dic.items() #[('a', 'hello'), ('c', 'you'), ('b', 'how')]

print dic.iteritems() #

iteriitems和items在sorted函数里面的应用区别:

iteritems()返回的是一个能遍历所有键值对的生成器。

items()返回的是整个列表中的键值对的拷贝,在你的dict比较大的情况下会消耗大量内存。

结果一致。

python itemgetter函数_[问题解决] sorted函数以及operator.itemgetter函数相关推荐

  1. python封装c++_用pybind11封装C++实现的函数库

    现有若干用C++编写的函数,为了能够用Python调用它们,可以通过pybind11将它们封装到一个Python模块中,在编写Python程序时只要导入该模块便能使用这些函数. 一.实现步骤 用C++ ...

  2. python grid函数_详解numpy中的meshgrid函数用法

    numpy中的meshgrid函数的使用 numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/num ...

  3. 未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...

    没有学不会的python 函数是什么? 老调常谈,还是那老一套,学习一个东西前,先搞懂是什么,再来学习怎么用. 函数函数,如果你是刚经历过高考肯定很熟悉,数学中就经常出现这个名词,比如什么sin函数, ...

  4. python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

    1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...

  5. 原生js已载入就执行函数_手写CommonJS 中的 require函数

    前言 来自于圣松大佬的文章<手写CommonJS 中的 require函数> 什么是 CommonJS ? node.js 的应用采用的commonjs模块规范. 每一个文件就是一个模块, ...

  6. concat函数_三、P57-61 MySQL中常用函数

    本部分主要讲解MySQL数据库中常用函数的使用. P57 SQL中的函数类型:字符串函数.数值函数.日期和时间函数.流程函数.其他常用函数: P58 第1部分:字符串函数 1.concat函数 con ...

  7. sigmoid函数_常用的激活(激励)函数——深度学习笔记(建议收藏)

    激活函数(又叫激励函数,后面就全部统称为激活函数)是模型整个结构中的非线性扭曲力,神经网络的每层都会有一个激活函数.那他到底是什么,有什么作用?都有哪些常见的激活函数呢? 深度学习的基本原理就是基于人 ...

  8. stat函数_数据分析工具入门 掌握这些Excel函数就够了

          1.什么是函数 可以把函数理解为一个可以控制的黑箱子,输入X到黑箱子中,他就会输出Y,参数就是黑箱子的控制开关,打到不同的档位,黑箱子会输出不同的Y.       2.常见函数分类 文本清 ...

  9. matlab的tfdata函数_较全的matlab 命令和函数

    d 菱形 -- 虚线 ^ 向上箭头 3.可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域.此时如要画不同的图形在一个窗口里,需要hold on. ============ ...

最新文章

  1. Python 初学者常犯的5个错误,布尔型竟是整型的子类
  2. 事故通报绝不能一报了事22344
  3. nodejs中使用worker_threads来创建新的线程
  4. js 两个map合并为一个map_ArcGIS API for JS3.x教程二:构建第一个简单的程序
  5. ApplicationId 与 PackageName
  6. 嵌入式操作系统内核原理和开发(线程切换)
  7. 身处外包中!有过低谷 5年时间让我年薪近100W...我的不放弃,让我看见了最美的明天...
  8. 微擎自动回复 加粉丝名_如何一天加100个精准粉丝?蒋老师告诉你系统的套路和方法...
  9. 软件架构入门,看这篇就够了···
  10. 教你开发一个JS代码加密工具
  11. 在线html编辑器 菜鸟,菜鸟教程
  12. 苹果描述文件服务器证书无效,iOS 描述文件重新配置失效问题,解决方法!
  13. kk每日一句:第一句
  14. 木瓜移动每日资讯0602:“店小秘”宣布完成1.35亿元人民币B+轮融资
  15. 2021南京大学计算机考研分数线,2021年南京大学考研分数线公布
  16. 福岛第一核电站的辐射水平已明显下降
  17. img标签 图片报错处理
  18. 基于python的马尔科夫链在股价预测中的应用(基于Tushare)
  19. 【AGC001E】BBQ Hard(图论,dp)
  20. 小米4C直接解锁、刷入TWRP

热门文章

  1. 《区块链技术与应用》学习笔记10——ETH数据结构
  2. Pandas二次学习- 回炉重造(进阶)
  3. Stata:边际效应分析
  4. Chrome源码剖析——多线程模型、进程通信、进程模型
  5. c语言输出五角星程序,c语言入门之绘制五角星.doc
  6. Pulling 1 repository Exception caught during execution of merge command
  7. 猿创征文|OneOS 万耦启物TB6612驱动电机
  8. debian 安装打印机驱动及打印机共享
  9. 9.PMAC上位机-上位机发送指令
  10. 个人简历技能特长或爱好计算机,四种适合写进个人简历的特长或爱好