2019年10月5日 星期六

Python dict 為無序序列範例


在程式設計中,

一個序列是否有固定順序,

絕對是很重要的一件事,

今天就介紹下:


Python dict 為無序序列範例

現在就先來看看在不同的軟體下,

同一段程式碼呈現的差異:


在Pycharm的Python Console:

rank = {'Nick': {'Coco': 1, 'Joker': 5},'John': {'Coco': 5, 'Joker': 1},'Kevin': {'Coco': 4, 'Joker': 2},'May': {'Coco': 1, 'Joker': 3}}

for n in rank:
    print (n)
   
顯示結果為:

Nick
John
Kevin
May



但是同樣的一段Code,

在之前介紹過的Python Tutor中,

卻是呈現May , Nick , John , Kevin的順序。 





其原因很簡單,

因為原始碼中的序列 rank 宣告為 dict ,

而 dict 為無序序列。

若在此範例中,

要顯示有固定順序的序列該如何做呢?

有下列幾種方式:

1. 將 dict 轉為有序的 List

2. 建立一個 key List 當作順序的參照

3. 在 Python 3.6 版本之後,可使用有序字典 OrderedDict

以上幾種方式都能解決 dict 的順序問題,



這裡以第2種方法為範例:

若要照著人名 Nick , John , Kevin , May的順序顯示的話,

可寫為:

rank = {'Nick': {'Coco': 1, 'Joker': 5}, 'John': {'Coco': 5, 'Joker': 1}, 'Kevin': {'Coco': 4, 'Joker': 2}, 'May': {'Coco':1, 'Joker': 3}}
#請在下方編寫code
keys = ['Nick', 'John', 'Kevin', 'May']
for k in keys:
    print(k)

特別在輸入輸出資料時,

更應該注意順序










沒有留言: