1. 程式人生 > >python對字典的基本操作(遍歷、排序)總結

python對字典的基本操作(遍歷、排序)總結

Python字典容器

python中的字典同其他語言中的字典作用一樣,都是用來儲存資料的容器。只不過不同於其他序列型資料用下標來訪問其中的物件,而是以關鍵字key來訪問其中的物件value。另外,字典也被稱為關聯陣列或者雜湊表。

字典的應用場景有很多,下面通過一個投票的例子來解釋。

環境 python3.5

建立一個字典:

dict = {
    'ZhangSan':2,
    'LiSi':10,
    'WangWu':5,
    'ZhaoLiu':4
}

字典的遍歷

1、遍歷字典的key

直接對字典進行遍歷得到的是key的遍歷結果。

for key in dict:
    print(key)

 也可以通過對dict.keys()方法返回的陣列進行遍歷。

for key in dict.keys():
    print(key)

2、遍歷字典的value

得到字典中的key之後就可以直接通過索引來得到相對應的value了。

for key in dict.keys():
    print(dict[key])

也可以通過dict.values()來直接遍歷索引。

for value in dict.values():
    print(value)

3、遍歷字典的項

通過dict.item()返回的元組數列可以遍歷整個結果,每個資料項是一個元組。

for item in dict.items():
    print(item)
('ZhangSan', 2)
('LiSi', 10)
('WangWu', 5)
('ZhaoLiu', 4)

也可以直接對items進行key和value的遍歷。

for key, value in dict.items():
    print(key, value)
ZhangSan 2
LiSi 10
WangWu 5
ZhaoLiu 4

字典的排序

有時候需要對生成的字典的結果按照key或者value進行排序,主要用到的方法就是python的內建函式sorted()

sorted()函式的作用是對所有可迭代的物件進行排序操作的函式。

sorted(iterable, cmp=None, key=None, reverse=False) 

引數說明:

  • iterable:是可迭代的資料型別。
  • cmp:是用於比較的函式,將key指定的關鍵字通過該函式規定的比較規則進行比較。有點類似java中的Comparable抽象類中的compareTo()方法。傳遞兩個引數,例如f(a,b),指定a和b的邏輯比較規則,結果返回正數、負數或者零來分別表示大於、小於和等於。
  • key:用於進行比較的資料。
  • reverse:排序規則,預設是True降序,或者設定為False來升序。

1、按照key值進行排序

當iterable傳入的dict時,dict返回的是對key迭代,所以得到的排序結果也是對key排序後的列表。

sorted_dict = sorted(dict, key=lambda x:x[0])
print(sorted_dict)
['LiSi', 'WangWu', 'ZhangSan', 'ZhaoLiu']

 如果傳入的是dict.items(),此時傳入的是元組,所以排序後返回的結果也是元組的列表。

sorted_dict = sorted(dict.items(), key=lambda x:x[0])
print(sorted_dict)
[('LiSi', 10), ('WangWu', 5), ('ZhangSan', 2), ('ZhaoLiu', 4)]

2、按照value值進行排序

按照value排序時,只需把key迭代物件選擇為x[1]就可以了。

sorted_dict = sorted(dict.items(), key=lambda x:x[1], reverse=True)
print(sorted_dict)
[('LiSi', 10), ('WangWu', 5), ('ZhaoLiu', 4), ('ZhangSan', 2)]

 其中,lambda匿名函式的作用類似:

def f(x):
    return x[1]