想问一下用python如何对中文的 一二三四进行排序?
巴扎黑
巴扎黑 2017-04-18 10:05:12
[Python讨论组]

今天偶然做一个问题的时候想要对一组数据的进行排序,然后里面有中文的 一二三四,排序出来的结果不是我想要的结果。然后我就比较了七和二的大小,发现七居然比二小

下面这张图是一到七排序后的结果


我知道导致这个结果的原因是因为编码的不同。但是如果我想知道如何对中文的数字进行排序呐?

巴扎黑
巴扎黑

全部回复(3)
PHPz

python3

>>> import enum
>>> class CN(enum.IntEnum):
    〇,一,二,三,四,五,六,七,八,九,十 = range(11)

    
>>> CN.七 > CN.一
True

>>> for i in CN:
    print(i, i.value)

    
CN.〇 0
CN.一 1
CN.二 2
CN.三 3
CN.四 4
CN.五 5
CN.六 6
CN.七 7
CN.八 8
CN.九 9
CN.十 10

>>> 玖 = '九'
>>> CN[玖].value
9
>>> 

>>> n = ['一', '三', '十', '二', '五', '九', '〇', '六', '四', '七', '八', '二']
>>> sorted(n,key=lambda x:CN[x])
['〇', '一', '二', '二', '三', '四', '五', '六', '七', '八', '九', '十']
怪我咯

将中文和数字做个映射然后比较
dic={'一':1,'二':2,'三':3,'四':4}

PHP中文网

中文一般按照拼音和笔画排序。
需要建立一张中文和拼音或笔画数的mapping表,然后通过对应的拼音或者笔画来作比较。

如果题主这里的需求只是比较“一,二,三,四,五,六,七,八,九,十”的话。
可以建立一张如下的对照表:

一 -> 1
二 -> 2
三 -> 3
四 -> 4
……
十 -> 10

然后利用对照值来作排序就很简单了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号