# 字典dict型態

串型型態在記錄大量的資料時非常有用，但缺點是每一個資料項目只能以數字來作為索引，在程式邏輯上就沒那麼方便。字典資料型態也是用來記錄大量的資料，而它和串列最不一樣的地方是，它的每一個資料項目都必需給一個「鍵key」，「key」和「value」是成對出現的。

指定資料給dict，主要用的是大括號，方式如下：

```python
week = {
    'Sunday': "星期日", 
    'Monday': "星期一", 
    'Tuesday': "星期二", 
    'Wednesday': "星期三", 
    'Thursday': "星期四", 
    'Friday': "星期五", 
    'Saturday': "星期六", 
}
```

有了上述的變數，請可以輕易地利用前面的字串作為索引而取出後面的值，範例程式如下：

```python
week = {
    'Sunday': "星期日", 
    'Monday': "星期一", 
    'Tuesday': "星期二", 
    'Wednesday': "星期三", 
    'Thursday': "星期四", 
    'Friday': "星期五", 
    'Saturday': "星期六", 
}
print(week['Thursday'])
for weekday in week:
    print(weekday)
for weekday in week.items():
    print(weekday)
for _, weekday in week.items():
    print(weekday)
```

其中，items()是用來取得每一個項目的「鍵值對」之函數，如果使用一個變數來接收，會以Tuple元組的型態來取得，如果指定給兩個變數的話，則key會被放在一個變數，而value則是放到另外一個變數中。

在上述程式的第13中的weekday就是以Tuple的型態收到資料，而第15行則是以個別變數的型式取得字典中的資料，不過，因為我們只要中文名字（也就是值的部份），其面的key並不需要，直接以「\_」底線符號來忽略它即可。

上述程式的執行結果如下：

```
星期四
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
('Sunday', '星期日')
('Monday', '星期一')
('Tuesday', '星期二')
('Wednesday', '星期三')
('Thursday', '星期四')
('Friday', '星期五')
('Saturday', '星期六')
星期日
星期一
星期二
星期三
星期四
星期五
星期六
```

其實如果只是想要取得字典中的鍵或值，還有專屬的函數可以用，那就是keys()和values()，程式範例如下：

```python
week = {
    'Sunday': "星期日", 
    'Monday': "星期一", 
    'Tuesday': "星期二", 
    'Wednesday': "星期三", 
    'Thursday': "星期四", 
    'Friday': "星期五", 
    'Saturday': "星期六", 
}
print(week.keys())
print(week.values())
```

執行結果如下：

```
dict_keys(['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'])
dict_values(['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'])
```
