2-3课后思考,手动对字典排序和中文排序的问题
来源:
Brook_StudyMachine
2017-01-19
问题1:
第一个例子后,对处理后的字典中的项进行排序,我自己扩展了手动排序
您看这样是否合理,能否有更高效或更简洁的方法?
from random import randint data=[randint(0,5) for _ in xrange(20)] print 'ran_list:', data c=dict.fromkeys(data,0) for x in data: c[x]+=1 print 'times_dict:',c l=zip(c.keys(),c.values()) print 'times_t_l:',l def bubble(l): for i in range(len(l)-1): for j in range(len(l)-1-i): if l[j][1]<l[j+1][1]: l[j],l[j+1]=l[j+1],l[j] return l print 'bubbled:', bubble(l) print 'max_3:',bubble(l)[:3]
问题2:
您的例子中,是使用英文文本进行排序。但我对中文排序是无效的,中文都是unicode
请问如何对中文文本排序?
写回答
2回答
-
程序员硕
2017-01-19
自己实现的排序要比内置sort慢, 冒泡排序效率也比较差.
中文按照怎么的规则排序呢?
012017-01-19 -
Brook_StudyMachine
提问者
2017-01-19
@程序员硕
1.sorted排序
def my_cmp(x,y): if x[1]>y[1]: return -1 else: return 1 print 'sorted:',sorted(l,my_cmp) print 'max_3:',sorted(l,my_cmp)[:3]
2.可能您忘了2-3中的题目,是对英文的单词出现顺序进行排序。
课程中,您用re.split('\W+',text)分割了文本中的单词,然后用Counter排序
如果对中文汉字出现顺序进行排序呢?(只排序单个汉字,不使用类似jieba分词库)
汉字文本都是/xxxx,用re.split分不出来。是不是还得转码?
一直对转码问题晕头转向的00
相似问题