## 什么是字典
一提到字典是不是就想到了新華字典?新華字典是一種字典,但是字典有更廣闊的含義。
我們每個班級都有一個**花名冊**,班主任想找某位同學的信息資料時,只需要從這個花名冊里根據同學的**名字**就可以取到這位同學的**個人信息**。在這里,*花名冊*就是我們的**字典(Map)**。(老師是不是可以像查字典一樣查閱同學的個人信息)

再來舉一個例子。我們用微信或QQ時,會打開一個**通訊錄**。在這個通訊錄里,我們根據好友的**昵稱**就可以找到這個好友,進而可以查看好友的聯系方式。*通訊錄*也是一個字典。

經過上面的例子,我們是不是對字典有個感性的認識了呢?我們可以把字典定義為:**由若干數據對元素組成的容器叫字典(Map)**。這個定義是不是和我們上節課學習的列表很像?下面我們就分析一下列表和字典的區別。
我們注意到在我們定義字典的時候用到了 **數據對**這個概念,啥是數據對呢?我們來看之前舉的例子 `名字->個人信息`;`昵稱->聯系方式`;這兩個都是數據對。在計算機里我們把它叫做 `鍵值對`,用`key->value`來表示。我們可以把鍵(key)這部分想象成**鑰匙**,值(value)這部分想象成**鎖**。
**字典(Map)** 是非常重要的數據結構。我們很多的數據查詢、檢索 都要用到字典。

## python里表示字典
看代碼:
~~~
a = {'小明':'10歲','阿達':'12歲','Tom':'15歲'}
~~~
我們定義了一個由`'小明':'10歲','阿達':'12歲','Tom':'15歲'` 4對元素組成的字典,并把這個字典賦值給了變量a。
字典是用`{}`包起來的,元素之間也是用`,`分隔開。注意每個數據對`key:value`的表示形式。key和value之間用`:`分隔開。接下來我們就可以用這些key檢索、操作這些vlaue了。
## 對字典能做哪些操作
我們能對字典這種數據結構做哪些操作呢?拿我們QQ或微信里的*通訊錄*做例子
1. 查看有多少個好友
2. 獲取某個好友的個人信息
3. 判斷某個人是否在通訊錄里
4. 更改某個好友的個人信息
5. 刪除某個好友
我們看看用python怎么表示這些操作。
~~~
a = {'小漠漠': '13750823822', '自由飛翔': '13528281235', 'jackson': '15027728853'}
len(a)
phone = a['jackson']
c = 'jackson' in a
a['jackson'] = '13322331212'
a.pop('jackson')
print(phone, c, a)
~~~
**python對字典的操作**
1. **取長度**-查看有多少個好友
`len(a)` 中的**len**方法用于取字典長度,這點和列表(list)一樣。
2. **獲取元素**-獲取某個好友的個人信息
`a['jackson']` 我們用`[key值]`來取字典中元素key為指定值的數據。這個和列表類似,但是列表用的是元素下標。字典用的是元素數據對里的key
3. **字典中是否包含某元素**-判斷某個人是否在通訊錄里
`'jackson' in a` 我們用 **... in ...** 語法來判斷一個元素是否在字典中,這點和列表也是一樣的
4. **更改元素的值**-更改某個好友的個人信息
`a['jackson'] = '13322331212'` 修改字典某元素的值和列表一樣,我們只需要使用賦值表達式即可。
5. **刪除元素**-刪除某個好友
`a.pop('jackson')` 從字典里刪除某個元素我們用**pop**方法,而列表用的是*remove*,這點要注意區別。
## 總結
這節課我們學習了什么是字典、字典的作用、我們對字典能做哪些操作。下節課,我們用字典來做一個項目實例,讓大家有個感性的認識。
- 課程介紹
- 搭建環境
- 什么是計算機
- 程序是怎么運行的
- 安裝python
- 項目實例-安裝IDE
- 變量和簡單數據類型
- 數據&變量
- 數字
- 字符串
- 布爾類型
- 項目實例
- 容器-列表
- 容器
- 列表
- 項目實例
- 容器-字典
- 定義字典
- 項目實例
- 數據類型總結
- 條件語句
- python條件語句
- 項目實例
- 循環語句
- for循環
- while循環
- 項目實例
- 函數
- 5.0函數定義
- 5.2函數實戰
- 6.文件系統
- 6.1 文件系統介紹&python查找文件
- 6.2 用python讀寫文件
- 7. python操作時間
- 8.面向對象
- 8.1 類和對象
- 8.2 繼承和重寫
- 8.3 面向對象項目實戰
- 9 GUI編程
- 9.1 GUI基礎
- 9.2 備忘清單GUI版
- 10.網絡
- 10.1 網絡的發展
- 10.2 python http
- 11.web開發
- 11.1 web基礎&HTML
- 11.2 CSS&JavaScript
- 11.3 網頁計算器
- 11.3 網站開發實戰-播客搭建
- 11.3 python-web
- 12. 項目實戰-數據處理
- 13. 項目實戰-AI入門
- 13.1 環境搭建
- 心得
- 13.2 Tensorflow的瓜怎么吃
- 14 pygame
- 14.1 pygame Helloworld
- 14.4 pygame 動畫基礎 Animation
- 從0開始學python第14.5節 pygame 加載圖片和聲音
- 從0開始學python第14.6節 pygame.sprite(上)
- 14.7 pygame.sprite模塊(下)
- 14.8 pygame射擊游戲(一)
- pygame射擊游戲(二)
- 14.8 pygame射擊游戲(三)
- 14.8 pygame射擊游戲(四)
- 14.8 pygame射擊游戲(五)