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

  • 相关阅读:
    HDU 5313 bitset优化背包
    bzoj 2595 斯坦纳树
    COJ 1287 求匹配串在模式串中出现的次数
    HDU 5381 The sum of gcd
    POJ 1739
    HDU 3377 插头dp
    HDU 1693 二进制表示的简单插头dp
    HDU 5353
    URAL 1519 基础插头DP
    UVA 10294 等价类计数
  • 原文地址:https://www.cnblogs.com/beile/p/11276532.html
Copyright © 2011-2022 走看看