zoukankan      html  css  js  c++  java
  • python 对字典分别按照key值、value值进行排序

    1.sorted函数
    首先介绍sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。

    其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序(从大到小),reverse=false则是顺序(从小到大),默认是reverse=false。

    2.按照key排序
    要对字典按照key排序,可以直接调用sorted函数。

    my_dict = {'lilee':25, 'age':24, 'phone':12}
    sorted(my_dict.keys())
    输出结果为
    
    ['age', 'lilee', 'phone']

    直接使用sorted(my_dict.keys())就能按key值对字典排序,这里是按照顺序对key值进行排序的,如果想按照倒序排序的话,只需要将reverse置为true即可。

    sorted(my_dcit.keys(), reverse = true)

    3.按照value值排序
    共有三种方法可以实现将字典按照value值进行排序

    (1)key使用lambda匿名函数取value进行排序

    d = {'lilee':25, 'wangyan':21, 'liqun':32, 'age':19}
    sorted(d.items(), key=lambda item:item[1])
    输出结果为
    
    [('age',19),('wangyan',21),('lilee',25),('liqun',32)]
    如果需要倒序则
    
    sorted(d.items(), key=lambda item:item[1], reverse=True)
    得到的结果就会是
    
    [('liqun',32),('lilee',25),('wangyan',21),('age',19)]

    (2)使用operator的itemgetter进行排序

    import operator
    sorted(d.items(), key=operator.itemgetter(1))
    输出结果为
    
    [('age',19),('wangyan',21),('lilee',25),('liqun',32)]

    (3)将key和value分装成元组,再进行排序

    f = zip(d.keys(), d.values())
    c = sorted(f)
    输出结果为
    
    [('age',19),('wangyan',21),('lilee',25),('liqun',32)]

    4.取出排序的前n个value值和key值
    可以按照如下操作:

    before = {
    "key1": 5,
    "key2": 6,
    "key3": 4,
    "key4": 3,
    }
    # 排序
    after = dict(sorted(before.items(), key=lambda e: e[1]))
    
    print(after)

    # 取出前几个, 也可以在sorted返回的list中取前几个

    required_cnt = 2
    cnt = 0 
    for key, value in after.items():
    cnt += 1
    if cnt > required_cnt:
    break
    print("{}:{}".format(key, value))

    ---------------------
    原文:https://blog.csdn.net/laobai1015/article/details/85114570

  • 相关阅读:
    HTC G12 HBOOT 2.0.0002 官解、降级精简教程!
    android call require api level
    刷机流程
    Android通过tcpdump抓包
    [原创]c#的线性表 Virus
    [原创]c++线性表的插入 Virus
    [原创]关于编程论坛封我ID的意见 Virus
    [原创]文件管理 Virus
    [原创]c#高级编程学习笔记(连载_委托) Virus
    [原创]c#中的内存管理 Virus
  • 原文地址:https://www.cnblogs.com/beile/p/11276532.html
Copyright © 2011-2022 走看看