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

  1. 自己实现的排序要比内置sort慢, 冒泡排序效率也比较差.

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

0
1
Brook_StudyMachine
这里直接回复不了,写到下面了
2017-01-19
共1条回复

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

0
0

Python高效编程技巧实战

精选50个Python案例,源自实战,全面提升Python编程能力

2582 学习 · 360 问题

查看课程