想问一下用python如何对中文的 一二三四进行排序?
巴扎黑
巴扎黑 2017-04-18 10:05:12
0
3
1248

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

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


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

巴扎黑
巴扎黑

reply all(3)
PHPzhong

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])
['〇', '一', '二', '二', '三', '四', '五', '六', '七', '八', '九', '十']
刘奇

Map Chinese characters and numbers and compare them
dic={'一':1,'二':2,'三':3,'四':4}

洪涛

Chinese is generally sorted according to pinyin and strokes.
You need to create a mapping table of Chinese characters and pinyin or stroke numbers, and then compare them through the corresponding pinyin or strokes.

If the questioner’s requirement here is just to compare “one, two, three, four, five, six, seven, eight, nine, ten”.
You can create a comparison table as follows:

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

Then it is very simple to use the comparison value to sort.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template