• 字典排序及应用


    字典排序:

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

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

    有一个字典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('
    ')
    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])
    
  • 相关阅读:
    SSIS -->> Data Type
    SSIS ->> Parameter
    Data Flow ->> Term Lookup
    Data Flow ->> Term Extraction
    Data Flow ->> Pivot
    Data Flow ->> OLE Command
    Data Flow ->> Multicast
    Data Flow ->> Union All
    Data Flow ->> Merge
    LeetCode OJ 118. Pascal's Triangle
  • 原文地址:https://www.cnblogs.com/yangxiaoling/p/6938771.html
Copyright © 2020-2023  润新知