Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将cmp转换为python 3

将cmp转换为python 3
EN

Stack Overflow用户
提问于 2020-01-02 03:21:31
回答 1查看 250关注 0票数 1

我正在尝试将python2函数转换为python3,问题是排序时使用了cmp关键字。我知道我可以通过使用类似于key=functools.cmp_to_key(agency_label_cmp)functools.cmp_to_key来解决这个问题。但是,我的函数使用cmp和'key‘关键字:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
results = sorted(results.items(), cmp=agency_label_cmp, key=operator.itemgetter(0))

所以我不明白如何才能将它转换成与python 3兼容的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def build_salary_results(agency_type):
    def agency_label_cmp(a, b):
        """
        Key that uses `agency_type_lookup` order to determine how
        everything is presented on the page.
        """
        L = map(operator.itemgetter(1), agency_type_lookup)
        return (L.index(a) > L.index(b)) -(L.index(a) < L.index(b))

    results = defaultdict(lambda: dict(agencies=[], navletters=set()))
    navlinks = set()

    if agency_type in special:
        it = Jurisdiction.objects.filter(kind=agency_type).order_by('name').iterator()
    else:
        it = Jurisdiction.objects.exclude(kind__in=special).order_by('name').iterator()

    for obj in it:
        if agency_type in special:
            label = obj.category
        else:
            label = dict(agency_type_lookup).get(obj.kind)

        if agency_type == 'SP' and not include_special_district(label):
            continue

        available_years = obj.available_years()
        if agency_type in special and not available_years:
            continue

        results[label]['agencies'].append((obj, available_years))
        results[label]['navletters'].add(obj.name[0].upper())
        navlinks.add(label)

    if agency_type in special:
        results = sorted(results.items(), key=operator.itemgetter(0))
        navlinks = sorted(navlinks)
    else:
        results = sorted(results.items(), cmp=agency_label_cmp, key=operator.itemgetter(0))
        navlinks = sorted(navlinks, cmp=agency_label_cmp)

    return navlinks, results
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 03:34:39

您可以从删除key参数开始。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
results = sorted(results.items(), cmp=agency_label_cmp, key=operator.itemgetter(0))

等同于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
results = sorted(results.items(), cmp=lambda x, y: agency_label_cmp(x[0], y[0]))

因为operator.itemgetter(0)仅仅是映射列表或与0处的元素等价的一种奇特的方式。

然后,您可以将其放入转换中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
results = sorted(results.items(), 
                 key=functools.cmp_to_key(lambda x, y: agency_label_cmp(x[0], y[0])))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59557958

复制
相关文章
mongodb导入json_json格式是什么
刚开始接触mongodb,以下介绍使用mongoVUE来导入和导出json格式的数据
全栈程序员站长
2022/09/25
1.3K0
mongodb导入json_json格式是什么
控制MongoDB中的集合分布
分片标记(Shard tagging)是MongoDB 2.2.0版中的一项新功能。通过对集合进行标记使其被强制写入到本地数据中心,也可以用来将某个集合固定到一个分片或一系列分片中。
Sepmer Fi
2018/01/10
2K0
控制MongoDB中的集合分布
mongodb 集合_mongodb原理
默认情况下,对比事务安全,MongoDB更关注高的插入速度。如果你需要加载大量低价值的业务数据,那么MongoDB将很适合你的用例。但是必须避免在要求高事务安全的情景下使用MongoDB,比如一个1000万美元的交易。
全栈程序员站长
2022/11/15
2K0
mongodb 集合_mongodb原理
JAVA中json转Map,jsonArray转List集合,List集合转json
在写代码时,经常会遇到各转类型之间互相转换,比如json转换为Map,jsonArray转List集合,List集合转json,现在整理一个工具类,方便日后查阅。
全栈程序员站长
2022/09/10
3.7K0
JAVA中json转Map,jsonArray转List集合,List集合转json
MongoDB 中的集合和元数据
集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
RiemannHypothesis
2022/11/05
1.9K0
MongoDB固定集合
一般情况下我们创建的集合是没有大小的,可以一直往里边添加文档,这种集合可以动态增长,MongoDB中还有一种集合叫做固定集合,这种集合的大小是固定的,我可以在创建的时候设置该集合中文档的数目,假设为100条,当集合中的文档数目达到100条时,如果再向集合中插入文档,则只会保留最新的100个文档,之前的文档则会被删除。一般像日志信息我们就可以使用固定集合,其他一些需要定期删除的数据也可以使用固定集合,本文我们就来看看这个固定集合的使用。 ---- 创建 固定集合的创建方式也比较简单,如下: db.create
江南一点雨
2018/04/02
1.1K0
MongoDB 系统集合
MongoDB将系统信息存储在使用<database>.system.*命名空间的集合中,这些集合是MongoDB保留供内部使用的。用户请不要创建以system开头的集合。
MongoDB中文社区
2021/09/24
6020
MongoDB 系统集合
MongoDB删除集合
作者: 初生不惑 Java技术QQ群:227270512 / Linux QQ群:479429477
拓荒者
2019/09/12
1.2K0
MongoDB 数组在mongodb 中存在的意义
在MOGNODB 的文档设计和存储中,存在两个部分 1 嵌套 2 数组,所以如果想设计好一个MONGODB 在理解业务,读写比例,查询方式后,就需要介入到更深层次的理解嵌套的查询方式,嵌套多层后的性能问题, 数组其实比嵌套带来更多的问题,所以今天我们的从数组开始。
AustinDatabases
2022/04/05
4.2K0
MongoDB  数组在mongodb 中存在的意义
在Docker中安装MongoDB
1.版本选取 访问mongodb的镜像仓库地址:https://hub.docker.com/_/mongo?tab=tags&page=1 这里选取最新版本进行安装,如果想安装其他的可用版本,可以使
Peyshine
2020/05/19
7.5K0
在Docker中安装MongoDB
MongoDB(三)—-MongoDB的集合操作
MongoDB使用db.createCollection()函数来创建集合。 语法格式:db.createCollection(name, options) name: 要创建的集合名称。 options: 可选参数, 指定有关内存大小及索引的选项。
全栈程序员站长
2021/04/07
9500
Linux中mongodb安装和导出为json
采用官方工具导出mongo数据为json格式 文档:https://docs.mongodb.com/manual/reference/program/mongoexport/ 可以远程导出,只要有host:port即可。 首先需要安装tools: 在redhat中: 文档:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1、编写repo文件 Create a /etc/yum.repos.d/mongodb-org
Ryan-Miao
2018/03/13
1.9K0
MongoDB导入Shapefile数据
两种解决方案: 一、将整个shapefile转为GeoJSON然后直接导入mongoDB数据库中 首先,将shapefile数据转为WGS84地理坐标,然后使用GDAL的命令行工具ogr2ogr进行格式的转换,转换命令如下: ogr2ogr -f geoJSON continents.json continents.shp 删除生成JSON文件的前两行{ "type": "FeatureCollection",和最后一行}。 最后,使用mongodb的mongoimport工具进行导入: mongoimport --db world --collection continents < continents.json 这样子整个shapefile文件在mongodb中是以一个document存在的。
卡尔曼和玻尔兹曼谁曼
2019/01/22
1.9K0
mongodb导出和导入
2018-08-12 发表在 服务器 1543 + 导出表: bin/mongoexport -h 10.28.65.152 -d health_shaanxi_pro -c wt.health.item -o health.json --type json 导入表: bin/mongoimport -d mongotest -c users --file /home/mongodump/articles.json --type json 数据库备份: mongodump -h dbho
小贝壳
2020/03/05
1.9K0
mongodb导入导出数据
mongodb数据备份与恢复 备份 mongodump -h <dbhost> -d <dbname> -o <dbdirectory> // 示例 mongodump -h localhost -d test -o /home/data -h 服务器地址 如: 127.0.0.1 也可以指定端口号: 127.0.0.1:27017 -d 需要备份的数据库名 如: test -o 存放的目录 如: /home/data mongodb会自动在/home/data下创建一个test目录,里面存放备份数据 恢复
零式的天空
2022/03/21
1.9K0
【Json】json在SpringBoot中的格式转换
fastjson深入理解 fastJson对于json格式字符串的解析主要用到了一下三个类:
瑞新
2020/12/07
6.4K0
【Json】json在SpringBoot中的格式转换
MongoDB 3.0 导入命令
./mongoimport -h 192.168.77.129 --db test --collection restaurants --drop --file /usr/local/mongodb-linux-x86_64-3.0.6/DW_LABEL_DATAS_1_0.csv
用户3003813
2018/09/06
9940
MongoDB 3.0 导入命令
在MongoDB中模拟Auto Increment
MySQL用户多半都有Auto Increment情结,不过MongoDB缺省并没有实现,所以需要模拟一下,编程语言以PHP为例,代码大致如下所示:
LA0WAN9
2021/12/14
9540
mongodb撤销集合分片
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
拓荒者
2019/09/12
1.8K0
44、MongoDB集合操作
(1)大家首先要知道,MongoDB中集合的概念也就是我们一般在mysql中所说的表,如何创建一个集合呢?如下:
Ewall
2018/12/06
4960
44、MongoDB集合操作

相似问题

iOS Swift检测键盘事件

30

如何检测国际键盘隐藏事件?iOS

10

如何在iPhone上检测硬件键盘上的键盘事件(iOS)

31

如何使用Swift在iOS中检测多行键盘粘贴事件?

10

iOS:如何检测外部键盘上的修改键状态更改?

128
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文