今天偶然做一个问题的时候想要对一组数据的进行排序,然后里面有中文的 一二三四,排序出来的结果不是我想要的结果。然后我就比较了七和二的大小,发现七居然比二小
下面这张图是一到七排序后的结果
我知道导致这个结果的原因是因为编码的不同。但是如果我想知道如何对中文的数字进行排序呐?
PHPz2017-04-18 10:07:12
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])
['〇', '一', '二', '二', '三', '四', '五', '六', '七', '八', '九', '十']
怪我咯2017-04-18 10:07:12
Map Chinese characters and numbers and compare themdic={'一':1,'二':2,'三':3,'四':4}
PHP中文网2017-04-18 10:07:12
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.