1. 程式人生 > >如何對字典按鍵值大小進行排序

如何對字典按鍵值大小進行排序

python 字典排序

有些時候,我們需要對字典按鍵值大小進行排序。
比如以下情況:
一個字典,包含的內容為 國家:人口數。
{‘Indonesia‘ : ‘239870000‘, ‘Malaysia‘ : ‘28401000‘}
註意字典的鍵值為字符串‘239870000’,不能直接進行大小排序。我們需要將它轉換成數字。

下面做一個案例。已有一個世界各國從1960年到2010年的人口統計。我們需要將2010年各國人口提取出來按從大到小排序。

參考代碼:

‘‘‘導入一個人口統計文本文件‘‘‘
import json
filename = ‘population_data.json‘
with open(filename) as f:
pop_data = json.load(f)

‘‘‘創建一個空字典,用於存放提取2010年的數據‘‘‘
pop_2010 = {}

‘‘‘提取出2010年的世界各國人口數,將數據以字典的格式存入剛才創建的空字典pop_2010‘‘‘
for pop_dict in pop_data:
if pop_dict[‘Year‘] == ‘2010‘:
try:
country_name = pop_dict[‘Country Name‘]
population = pop_dict[‘Value‘]
pop_2010[country_name] = int(population)
except ValueError:
continue

‘‘‘打印字典,排序‘‘‘
print(sorted(pop_2010.items(), key = lambda item:item[1], reverse = True))

這裏的pop_2010.items()實際上是將字典pop_2010轉換為可叠代對象,叠代對象的元素為(‘Indonesia‘, 239870000)、(‘Malaysia‘, 28401000),items()方法將字典的元素轉化為了元組,而這裏key參數對應的lambda表達式的意思則是選取元組中的第二個元素作為比較參數(如果寫作key=lambda item:item[0]的話則是選取第一個元素作為比較對象,也就是key值作為比較對象。lambda x:y中x表示輸出參數,y表示lambda函數的返回值),所以采用這種方法可以對字典的value進行排序。註意排序後的返回值是一個list,而原字典中的名值對被轉換為了list中的元組。

如何對字典按鍵值大小進行排序