python 实现 topk算法

这里的版本是针对的一个class的某一个成员变量进行的:
关于如何定义对象的比较方法,请参考往期文章:python定义对象的比较方法

class province_room_quality_data:def __init__(self, room, quality):self.room = roomself.quality = qualitydef __lt__(self, other):return self.quality < other.quality

topk代码:

from typing import List
import heapq
# 对province_room_quality_data对象的TopK排序算法
def top_k(arr: List[province_room_quality_data], k: int) -> List[province_room_quality_data]:if k == 0:return list()hp = [item for item in arr[:k]]heapq.heapify(hp)for i in range(k, len(arr)):if hp[0].quality < arr[i].quality:heapq.heappop(hp)heapq.heappush(hp, arr[i])ans = [x for x in hp]return ans

最后可以得到基于quality的TopK大的对象数组,注意这里的对象数组并不是基于quality有序的,所以如果最后需要有序的话还得再执行一下sort

newList = top_k(list, 20)
newList.sort(reverse=True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2013年,未知的旅程

去年就开始策划要辞职到外面去闯一闯&#xff0c;今年年初在上一家公司毅然辞职了&#xff0c;理由是自己需要出去锻炼锻炼。 带着一个月的工资&#xff0c;和一点积蓄&#xff0c;还有一个女朋友来到了这个我以前都没有来过的城市-深圳。 听好多人都说过深圳是个好地方&#x…

SQL基础

经过这几天我才发现原来我最弱的是数据库&#xff0c;好了现在就来补补吧 SQL(Struct Query Language) 结构化查询语言&#xff0c;属于第四代语言&#xff08;接近于自然语言&#xff09;符合主谓宾定状补 DDL (Data Define L)数据定义语言,创建一个数据库&#xff0c;创建一个…

主成分分析资料

推荐一份介绍主成分分析的资料&#xff1a;http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf&#xff0c;写的很好&#xff01; 在R语言中使用PCA&#xff1a;http://www.cnblogs.com/bigshuai/archive/2012/06/18/2553808.html 转载于:https://…

关于mysql的binlog写满磁盘而导致mysql无法连接的问题。

问题描述与追踪 首先是mysql连不上&#xff1a; [rootVM-90-225-centos ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/lib/mysql/mysql.sock (111)然后查看mysql的状态&#xff1a; [rootVM-90-225-c…

.NET系统架构改造的经验和教训

转自&#xff1a; http://robbinfan.com/blog/43/rid-off-dotnet-experience 在互联网行业&#xff0c;基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案&#xff0c;这不仅仅是因为Linux本身足够的开放性&#xff0c;更因为围绕传统Unix/Linux社区有大量的成熟开…

yum error :No module named yum

Yum&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖…

403报错解决方案

403报错解决方案 服务器使用yum install httpd时出现403报错&#xff0c;参考了几个文章&#xff1a; 首先根据这篇文章&#xff1a; devcloud上yum install 安装软件报错403 打开 /root/.bashrc 文件&#xff0c;然后在最末尾可以看到 no_proxy&#xff1a; export no_pr…

控制器中获取Field值

在ASP.NET MVC程序中&#xff0c;我们需要POST Data到制器中&#xff0c;是有很多方法。但是我们想在控制器中&#xff0c;获取Feild值呢&#xff1f;怎样获取&#xff1f;你可以留意到有一个类FormCollection。它能帮助到我们解决这个问题。 举个简单的例子。在ASP.NET MVC应用…

new(std::nothrow)

new(std::nothrow) 顾名思义&#xff0c;即不抛出异常&#xff0c;当new一个对象失败时&#xff0c;默认设置该对象为NULL&#xff0c;这样可以方便的通过if(p NULL) 来判断new操作是否成功 普通的new操作&#xff0c;如果分配内存失败则会抛出异常&#xff0c;虽然后面一般也…

如何删除cygwin

网上大多数方法在不具备用户权限获取的情况下都不能工作。 国外有人通过很简单的命令行就实现了&#xff1a; Here’s how to remove Cygwin once and for all. You will need Cygwin cmd.exe 2 minutesRun cmd, navigate to C:\ (or other disk, if you have installed it in …

私有RTP协议和标准流媒体协议

先介绍下RTP协议&#xff1a; 实时传输协议RTP&#xff08;Real-time Transport Protocol&#xff09;是一个网络传输协议 &#xff0c;该协议详细说明了在互联网上传递音频和视频的标准数据包格式 。 RTP标准定义了两个子协议 &#xff0c;RTP和RTCP 数据传输协议RTP&#xff…

【python】入门学习(五)

字符串&#xff1a; 正索引&#xff0c;从0开始 和 负索引&#xff0c;从-1开始 >>> s apple >>> s[0] a >>> s[1] p >>> s[2] p >>> s[3] l >>> s[4] e >>> s[-1] e >>> s[-2] l >>> s[-3…

实现 winform 异步跨线程访问UI控件

在开发winform时经常会用到多线程防止界面出现假死现象&#xff0c;比如当你单击某个按钮时&#xff0c;需要执行很多代码&#xff0c;但是在执行过程中想实时的将当前执行的情况报告给用户&#xff0c;类型进度条或文本什么的。 这个时候很显然&#xff0c;如果你把要实现的内…

JavaScript对象的创建总结

方式 缺点 优点 基于已有对象扩充属性和方法 不可重用&#xff0c;没有约束 无 工厂方法 检测不出是什么的实例 简单封装&#xff0c;可以传参 构造方法 每创建一个对象就有开辟存放方法的空间 能通过instanceof检测出实例类型&#xff0c;可以传参 原型方式 不能…

从WebRtc学习RTP协议

文章目录TCP为何不适用于实时音视频UDP->RTPRTP协议结构JittbufferRTP扩展头RTP填充数据参考TCP为何不适用于实时音视频 可靠性是以牺牲实时性为代价的。按照TCP原理&#xff0c;当出现极端网络情况时&#xff0c;理论上每个包的时延可达到秒级以上&#xff0c;而且这种时延…

我的第一个android应用上架,纪念一下

好久没有写博客了&#xff0c;最近一直在忙着弄自己的“汽车小助手“http://www.mumayi.com/android-318299.html软件&#xff0c;终于在今天上架了&#xff0c;尽管今天的广告收入只有5毛&#xff0c;写个博客纪念一下。里面嵌入了万普平台的广告&#xff0c;大家都懂得。一天…

内核态与用户态【转载】

原文&#xff1a;http://blog.csdn.net/skywalkzf/article/details/5185442 内核态与用户态是操作系统的两种运行级别&#xff0c;intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高&#xff0c;Ring3最低。其中特权级0&#xff08;Ring0&#xff09;是留给操作系统代…

解决ListView异步加载数据之后不能点击的问题

在ListView的onScroll事件中执行异步加载数据&#xff0c;然后使用notifyDataSetChange()函数更新适配器&#xff0c;之后发现listView不能点击了&#xff0c;这问题苦恼了我半天。最后在一篇博文中发现调用listView的requestFocusFromTouch()函数终于解决了这问题。 Java代码…