另一個非常有用的 Python 內建數據類型是?_字典_?(參見?_typesmapping_?)。字典在某些語言中可能稱為 聯合內存 ( associative memories )或 聯合數組 ( associative arrays )。序列是以連續的整數為索引,與此不同的是,字典以?_關鍵字_?為索引,關鍵字可以是任意不可變類型,通常用字符串或數值。如果元組中只包含字符串和數字,它可以做為關鍵字,如果它直接或間接的包含了可變對象,就不能當做關鍵字。不能用鏈表做關鍵字,因為鏈表可以用索引、切割或者?append()?和?extend()等方法改變。
理解字典的最佳方式是把它看做無序的鍵:?_值對_?(key:value 對)集合,鍵必須是互不相同的(在同一個字典之內)。一對大括號創建一個空的字典:?{}?。初始化鏈表時,在大括號內放置一組逗號分隔的鍵:值對,這也是字典輸出的方式。
字典的主要操作是依據鍵來存儲和析取值。也可以用?del?來刪除鍵:值對(key:value)。如果你用一個已經存在的關鍵字存儲值,以前為該關鍵字分配的值就會被遺忘。試圖從一個不存在的鍵中取值會導致錯誤。
對一個字典執行?list(d.keys())?將返回一個字典中所有關鍵字組成的無序列表(如果你想要排序,只需使用?sorted(d.keys())?)。使用?in?關鍵字(指Python語法)可以檢查字典中是否存在某個關鍵字(指字典)。
這里是使用字典的一個小示例:
~~~
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
~~~
dict()?構造函數可以直接從 key-value 對中創建字典:
~~~
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
~~~
此外,字典推導式可以從任意的鍵值表達式中創建字典:
~~~
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
~~~
如果關鍵字都是簡單的字符串,有時通過關鍵字參數指定 key-value 對更為方便:
~~~
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}
~~~
- Python 入門指南
- 1. 開胃菜
- 2. 使用 Python 解釋器
- 2.1. 調用 Python 解釋器
- 2.2. 解釋器及其環境
- 3. Python 簡介
- 3.1. 將 Python 當做計算器
- 3.2. 編程的第一步
- 4. 深入 Python 流程控制
- 4.1. if 語句
- 4.2. for 語句
- 4.3. range() 函數
- 4.4. break 和 continue 語句, 以及循環中的 else 子句
- 4.5. pass 語句
- 4.6. 定義函數
- 4.7. 深入 Python 函數定義
- 4.8. 插曲:編碼風格
- 5. 數據結構
- 5.1. 關于列表更多的內容
- 5.2. del 語句
- 5.3. 元組和序列
- 5.4. 集合
- 5.5. 字典
- 5.6. 循環技巧
- 5.7. 深入條件控制
- 5.8. 比較序列和其它類型
- 6. 模塊
- 6.1. 深入模塊
- 6.2. 標準模塊
- 6.3. dir() 函數
- 6.4. 包
- 7. 輸入和輸出
- 7.1. 格式化輸出
- 7.2. 文件讀寫
- 8. 錯誤和異常
- 8.1. 語法錯誤
- 8.2. 異常
- 8.3. 異常處理
- 8.4. 拋出異常
- 8.5. 用戶自定義異常
- 8.6. 定義清理行為
- 8.7. 預定義清理行為
- 9. 類
- 9.1. 術語相關
- 9.2. Python 作用域和命名空間
- 9.3. 初識類
- 9.4. 一些說明
- 9.5. 繼承
- 9.6. 私有變量
- 9.7. 補充
- 9.8. 異常也是類
- 9.9. 迭代器
- 9.10. 生成器
- 9.11. 生成器表達式
- 10. Python 標準庫概覽
- 10.1. 操作系統接口
- 10.2. 文件通配符
- 10.3. 命令行參數
- 10.4. 錯誤輸出重定向和程序終止
- 10.5. 字符串正則匹配
- 10.6. 數學
- 10.7. 互聯網訪問
- 10.8. 日期和時間
- 10.9. 數據壓縮
- 10.10. 性能度量
- 10.11. 質量控制
- 10.12. “瑞士軍刀”
- 11. 標準庫瀏覽 – Part II
- 11.1. 輸出格式
- 11.2. 模板
- 11.3. 使用二進制數據記錄布局
- 11.4. 多線程
- 11.5. 日志
- 11.6. 弱引用
- 11.7. 列表工具
- 11.8. 十進制浮點數算法
- 12. 接下來?
- 13. 交互式輸入行編輯歷史回溯
- 13.1. 行編輯
- 13.2. 歷史回溯
- 13.3. 快捷鍵綁定
- 13.4. 其它交互式解釋器
- 14. 浮點數算法:爭議和限制
- 14.1. 表達錯誤
- 15. 附錄
- 15.1. 交互模式