码迷,mamicode.com
首页 > 编程语言 > 详细

字典排序及应用

时间:2017-06-03 23:24:10      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:键值   front   换行   lis   ems   pre   append   str1   list   

字典排序:

因为我们都知道字典是无序的,所以也没有想过字典怎么排序,直到……唉

废话不多说,先看按值、按键排序的方法吧。

有一个字典dic1 = {‘tired‘: 1, ‘car‘: 2, ‘man‘: 2, ‘of‘: 1, ‘front‘: 1, ‘who‘: 2, ‘in‘: 1, ‘run‘: 2, ‘exhausted‘: 1, ‘get‘: 2, ‘behind‘: 1}

按值排序:dic2 = sorted(dic1.items(),key=lambda d:d[1],reverse=True)

    分析:dic1.items()是类似[(‘tired‘,1),(‘car‘,2),()...]这样列表套元组的数据类型(但它不是列表,一个小元组就是一个键值对)。

         key对应一个匿名函数,参数d是前面那个序列的元素,是个小元组,匿名函数的结果是就是键值对的值。

         reverse,默认按从小到大的顺序排序,reverse=True表示反序。

    结果:[(‘car‘, 2), (‘man‘, 2), (‘who‘, 2), (‘run‘, 2), (‘get‘, 2), (‘tired‘, 1), (‘of‘, 1), (‘front‘, 1), (‘in‘, 1), (‘exhausted‘, 1), (‘behind‘, 1)]

按键排序:dic3 = sorted(dic1.items(),key=lambda d:d[0],reverse=True)

    结果:[(‘who‘, 2), (‘tired‘, 1), (‘run‘, 2), (‘of‘, 1), (‘man‘, 2), (‘in‘, 1), (‘get‘, 2), (‘front‘, 1), (‘exhausted‘, 1), (‘car‘, 2), (‘behind‘, 1)]

如果直接排序呢?dic4=sorted(dic1)

    结果:[‘behind‘, ‘car‘, ‘exhausted‘, ‘front‘, ‘get‘, ‘in‘, ‘man‘, ‘of‘, ‘run‘, ‘tired‘, ‘who‘],只有键没有值。

实例:找出一个字符串中,字符出现频率最高的5个字符及其出现频率。

#有换行,有各种标点符号的字符串
str1 = """Man who run in front of car, get tired.
man who run behind car, get exhausted."""
#为了去除换行符,先分成一行一行的,以换行符为分隔符。
linelist = str1.split(‘\n‘)
wordlist2 = []
for line in linelist:
    #以空格为分隔符,分成一个单词一个单词的
    wordlist = line.split(‘ ‘)
    for word1 in wordlist:
        #去除标点符号最后把所有单词添加到一个列表
        lastchar = word1[-1]
        if lastchar in [",", ".", "!", "?", ";"]:
            word2 = word1.rstrip(lastchar)
        else:
            word2 = word1
        wordlist2.append(word2.lower())
fredic = {}
for word3 in wordlist2:
    #统计出现频率,构造字典,键为单词,值为出现频率
    fredic[word3] = fredic.get(word3,0) + 1
print(fredic)
#按值排序
fredic2 = sorted(fredic.items(),key=lambda d:d[1],reverse=True)
print(fredic2[0:5])

 

字典排序及应用

标签:键值   front   换行   lis   ems   pre   append   str1   list   

原文地址:http://www.cnblogs.com/yangxiaoling/p/6938771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!