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

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

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


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

巴扎黑
巴扎黑

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

Peta aksara dan nombor Cina dan kemudian bandingkan
dic={'一':1,'二':2,'三':3,'四':4}

洪涛

Aksara Cina biasanya diisih mengikut pinyin dan pukulan.
Anda perlu mencipta jadual pemetaan aksara Cina dan pinyin atau bilangan sebatan, dan kemudian membandingkannya melalui pinyin atau sebatan yang sepadan.

Jika keperluan penyoal di sini hanyalah untuk membandingkan "satu, dua, tiga, empat, lima, enam, tujuh, lapan, sembilan, sepuluh".
Anda boleh membuat jadual perbandingan seperti berikut:

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

Maka adalah sangat mudah untuk menggunakan nilai perbandingan untuk mengisih.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan