请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

2-3课后思考,手动对字典排序和中文排序的问题

问题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

请问如何对中文文本排序?

正在回答 回答被采纳积分+3

2回答

程序员硕 2017-01-19 08:47:37
  1. 自己实现的排序要比内置sort慢, 冒泡排序效率也比较差.

  2. 中文按照怎么的规则排序呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 Brook_StudyMachine #1
    这里直接回复不了,写到下面了
    回复 有任何疑惑可以回复我~ 2017-01-19 10:43:42
提问者 Brook_StudyMachine 2017-01-19 10:43:15

@程序员硕

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分不出来。是不是还得转码?
一直对转码问题晕头转向的

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信