Python 对列表元素个数进行统计

 比如测试的列表是:现在要统计列表中元素的个数,返回这个元素以及个数的统计值:

test_list = [90,3,2,1,1,1,59,16,16]

方法1:

思路:列表中算去重(set方法可实现)作为字典的key,统计列表中每一个元素出现的个数(列表的count方法可实现),然后将拿到值依次迭代循环放到新的字典中,在对字典中的key排序

此处注意的是,sorted排序的时候,返回的是列表,如果是使用,字典的values()或者keys()进行排序,都不能实现同时将统计的元素和个数同时拿出来,所以这里使用了字典的items()方法,items() 方法以列表返回可遍历的(键, 值) 元组数组,所以lamdba函数是在元祖中取值作为排序依据,x[0]是key,x[1]是元素的个数

def count_num_list(test_list):
    """
    sort 是应用在 list 上的方法,返回的是对已经存在的列表进行操作,无返回值
    sorted 可以对所有可迭代的对象进行排序操作,返回的是一个新的 list,而不是在原来的基础上进行的操作。
    :param test_list:
    :return:
    """
    #列表去重,作为字典的key
    data_set = set(test_list)
    res_dic = {}
    for i in data_set:
        #Python 字典 update()方法用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中。
        res_dic.update({i:test_list.count(i)})
    #对字典按照key的大写进行排序,所以key=lambda x:x,
    # 如果对值进行排序的话,就是key=lambda x:x[1]
    sort_res_dic = sorted(res_dic.items(),key=lambda x:x[0],reverse=True)
    return sort_res_dic

 方法2:

思路:定义一个新的字典,通过字典的get()方法去查找每一个key是否在列表中,默认统计个数为0,如果存在的话加1,然后把统计个数赋值指定key的字典元素的值(以列表元素为key)

此处注意的是,sorted排序的时候,返回的是列表,如果是使用,字典的values()或者keys()进行排序,都不能实现同时将统计的元素和个数同时拿出来,所以这里使用了字典的items()方法,items() 方法以列表返回可遍历的(键, 值) 元组数组,所以lamdba函数是在元祖中取值作为排序依据,x[0]是key,x[1]是元素的个数

def count_num_in_list(test_list):
    """
    Python3 字典 get()-函数返回指定键的值
    参数:
        key -- 字典中要查找的键。
        value -- 可选,如果指定键的值不存在时,返回该默认值。
    返回值:
        返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值。
        dic_count.get(i,0) 的含义就是在字典中使用列表的值作为key去查找
        key没有在字典中出现,则返回默认值0,加1的含义是标记,这个元素出现了1次,把这个标记个数的值赋值给指定key的字典元素的值(以列表元素为key)
    :param test_list:
    :return:
    """
    dic_count = {}
    for i in test_list:
        dic_count[i]=dic_count.get(i,0)+1
    res_dic = sorted(dic_count.items(),key=lambda x:x,reverse=True)
    return res_dic

以上是本人学习笔记,有什么好的思路,可留言探讨

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值