1. 程式人生 > >python_如何對字典進行排序?

python_如何對字典進行排序?

反轉 abc import 通過 item abcd mic 先後 true

案例:

某班英語成績以字典的形式存儲為:

{‘lili’:78, ‘jin’:50, ‘liming’: 30, ......}

   依據成績高低,進行學生成績排名

如何對字典排序?

  方法1:

#!/usr/bin/python3

from random import randint


def sort_dict(data):
    # 獲得字典的key
    keys = data.keys()
    
    # 獲得字典的value
    valus = data.values()
    
    # 按(value,keys)進行zip拼接
    data_items = zip(valus, keys)
    
    # 按value進行排序,依據zip函數值的先後順序,reverse表示列表是否翻轉
    return sorted(data_items, reverse=True)


if __name__ == ‘__main__‘:
    # 生成abcdefg學生對應的分數
    data = {k: randint(0, 100) for k in ‘abcdefg‘}
    
    # 獲取排名
    result = sort_dict(data)
    print(result)

  方法2:

  按key排序

#!/usr/bin/python3

from random import randint


def sort_dict(data):
    print(data.items())
    # 按key進行排序,reverse 表示列表是否翻轉,x[0] 取的是data.items()中對應字典的key值
    return sorted(data.items(), key=lambda x: x[0], reverse=True)

if __name__ == ‘__main__‘:
    # 生成abcdefg各學生對應的分數
    data = {k: randint(0, 100) for k in ‘abcdefg‘}
    
    # 獲取排名
    result = sort_dict(data)
    print(result)

  按value排序

#!/usr/bin/python3

from random import randint


def sort_dict(data):
    print(data.items())
    # 按value進行排序,reverse 表示列表是否翻轉,x[0] 取的是data.items()中對應字典的value值
    return sorted(data.items(), value=lambda x: x[1], reverse=True)

if __name__ == ‘__main__‘:
    # 生成abcdefgg各學生對應的分數
    data = {k: randint(0, 100) for k in ‘abcdefg‘}
    
    # 獲取排名
    result = sort_dict(data)
    print(result)

  先把字典變成列表中元組形式,然後通過sorted函數,lambda叠代每個列表值,x[0]指向字典key,x[1]指向value,reverse是否反轉,默認從小到大

python_如何對字典進行排序?