# Dictionary

## 宣告字典，與字典操作

我們來看看以下的範例:

```python
emptyDictionary = {}
print(emptyDictionary)
print(type(emptyDictionary))

tom = {'name': 'Tom Wang', 'age': 20, 'height': 170, 'weight': 60, 'blood': 'B'}
mary = {'name': 'Mary Jane', 'age': 21, 'height': 165, 'weight': 55, 'blood': 'A'}

def printData(person):
    print('{} age is {}, height is {}, weight is {}, blood is {}'
    .format(person['name'], person['age'], person['height'], person['weight'], person['blood']))

printData(tom)
printData(mary)

# 這邊我們看到，就算dictionary裡面的item順序不一樣，只要值完全一樣，互相比對還是會相等的
tom2 = {'blood': 'B', 'name': 'Tom Wang', 'age': 20, 'height': 170, 'weight': 60}
print(tom == tom2)

print('next year~')
tom['age'] = 21
tom['height'] = 172
tom['weight'] = 61
printData(tom)
```

前三行說明一個空的dictionary如何宣告，並且印出dictionary的樣子，以及印出dictionary的型別。

其他的則是對dictionary的一些取值，指派語法。

我們可以觀察到，字典其實是由一對一對的(key, value)組合的，tom這個字典由('name': 'Tom Wang'), ('age': 20 ), ('height': 170)...組成， 'name'是第一個item的key，中文我們稱之為鍵, 'Tom Wang'是第一個item的value，中文我們稱之為值， 所以字典就是由一連串的key-value pair(鍵值對)組成， 其中的鍵只能使用int, float, str, tuple等型別， 而值則可以使用任何型別，即便是像以下誇張的範例，也是可以執行的。

```python
m = {('a', 1): [1, 2, 3]}
m['b'] = 1234
print(m)
```

所以，字典當中的一個鍵值對，我們稱為item，item的key稱為鍵，item的value稱為值。

我們還可以觀察到`tom == tom2`是True, 因此字典當中得鍵值對是沒有順序的，所以即便順序不同，它們其實是一樣的東西。
