开发者社区> 问答> 正文

Python 按键(key)或值(value)对字典进行排序

Python 按键(key)或值(value)对字典进行排序

展开
收起
游客ejnn55cgkof5g 2020-02-14 18:39:40 2614 0
1 条回答
写回答
取消 提交回答
  • def dictionairy():  
      
        # 声明字典
        key_value ={}     
     
        # 初始化
        key_value[2] = 56       
        key_value[1] = 2 
        key_value[5] = 12 
        key_value[4] = 24
        key_value[6] = 18      
        key_value[3] = 323 
     
        print ("按键(key)排序:")   
     
        # sorted(key_value) 返回一个迭代器
        # 字典按键排序
        for i in sorted (key_value) : 
            print ((i, key_value[i]), end =" ") 
      
    def main(): 
        # 调用函数
        dictionairy()              
          
    # 主函数
    if __name__=="__main__":      
        main()
    执行以上代码输出结果为:
    
    按键(key)排序:
    (1, 2) (2, 56) (3, 323) (4, 24) (5, 12) (6, 18) 
    实例2:按值(value)排序
    def dictionairy():  
     
        # 声明字典
        key_value ={}     
     
        # 初始化
        key_value[2] = 56       
        key_value[1] = 2 
        key_value[5] = 12 
        key_value[4] = 24
        key_value[6] = 18      
        key_value[3] = 323 
     
     
        print ("按值(value)排序:")   
        print(sorted(key_value.items(), key = lambda kv:(kv[1], kv[0])))     
       
    def main(): 
        dictionairy()             
          
    if __name__=="__main__":       
        main()
    执行以上代码输出结果为:
    
    按值(value)排序:
    [(1, 2), (5, 12), (6, 18), (4, 24), (2, 56), (3, 323)]
    实例 3 : 字典列表排序
    lis = [{ "name" : "Taobao", "age" : 100},  
    { "name" : "Runoob", "age" : 7 }, 
    { "name" : "Google", "age" : 100 }, 
    { "name" : "Wiki" , "age" : 200 }] 
      
    # 通过 age 升序排序
    print ("列表通过 age 升序排序: ")
    print (sorted(lis, key = lambda i: i['age']) )
      
    print ("\r") 
      
    # 先按 age 排序,再按 name 排序
    print ("列表通过 age 和 name 排序: ")
    print (sorted(lis, key = lambda i: (i['age'], i['name'])) )
      
    print ("\r") 
      
    # 按 age 降序排序
    print ("列表通过 age 降序排序: ")
    print (sorted(lis, key = lambda i: i['age'],reverse=True) )
    执行以上代码输出结果为:
    
    列表通过 age 升序排序: 
    [{'name': 'Runoob', 'age': 7}, {'name': 'Taobao', 'age': 100}, {'name': 'Google', 'age': 100}, {'name': 'Wiki', 'age': 200}]
    
    列表通过 age 和 name 排序: 
    [{'name': 'Runoob', 'age': 7}, {'name': 'Google', 'age': 100}, {'name': 'Taobao', 'age': 100}, {'name': 'Wiki', 'age': 200}]
    
    列表通过 age 降序排序: 
    [{'name': 'Wiki', 'age': 200}, {'name': 'Taobao', 'age': 100}, {'name': 'Google', 'age': 100}, {'name': 'Runoob', 'age': 7}]
    
    2020-02-14 18:40:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载