zoukankan      html  css  js  c++  java
  • 关于传入列表出现元素次数排序题目的一点心得

    首先把题目贴出来:

            给定一个只包含正整数且非空的数组(如[1,6,7,4,4,5,4,5,4,5,5,6,7,8,5,6,7,3,4,2,2,1,4,8,9,4,5,6]),返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序排列,N不存在取值非法的情况),请用熟悉的语言实现该需求 

    然后是代码:

    class Homework():
        def Array(self):
            input_array = []
            while True:
                list = input("请输入你要记录的数组数字,回车确定,'Q'退出:
    ")
                if list.isdigit() == True:
                    input_array.append(list)
                    print(input_array)
                elif list == "Q":
                    return input_array
                else:
                    print("输入错误,请重新输入!")
                    continue
        def Frequency(self,input_array=[]):
            print(input_array)
            frequency = {}
            for i in range(len(input_array)):
                key  = input_array[i]
                num = input_array.count(key)
                dict_1 = { key : num }
                frequency.update(dict_1)
            return frequency
        def Sort(self,frequency):
            d = sorted(frequency.items(),key=lambda item:item[1],reverse=True)
            print("按照出现次数从多到少排序情况如下:
    ")
            for i in range(len(d)):
                print('{}出现{}次'.format(d[i][0],d[i][1]))
    if __name__ == '__main__':
        input_array = Homework().Array()
        frequency = Homework().Frequency(input_array)
        Homework().Sort(frequency)

    第一点:传入字典或者列表的参数最好为(self,list)或者(self,dict),不然会冒出奇怪的参数,比如object at 0x0000028FC5B70588,这个参数莫名其妙的出现,卡了我很久 ,然后加了self才把这个参数分离出去

    第二点:字典经过sorted排序之后的类型就不再是dict而是list了,最开始我以为排序后依旧是字典,用字典的取执法反而报错,加了断点才发现排序后的类型变了,以后要注意

    第三点:如果想要sorted排序后依旧是字典,可以在最外层加dict()方法,例如 

    d = dict(sorted(frequency.items(),key=lambda item:item[1],reverse=True))

    就行了,不过还是之前的哪句话,尽量避免无意义的参数类型转换,所以最后还是按照列表类型取值

    总之,收获还是蛮多的

  • 相关阅读:
    杨中科 向HtmlAgilityPack道歉:解析HTML还是你好用
    感觉这个JQuery不错,查询方便
    数据库异步操作
    Command 设计模式
    osg 细节裁剪 SAMLL_FEATURE_CULLING
    errno错误代码
    清空std::stringstream
    eclipse android javabuilder +CDTbuilder
    mfc c++ system调用 控制台窗口
    Androidndkr8e wordlist 第二个参数不是数值参数
  • 原文地址:https://www.cnblogs.com/keima/p/10425604.html
Copyright © 2011-2022 走看看