1.Python 字典(Dictionary) 字典是另一種可變容器模型,且可存儲任意類型對象。 字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括弧({})中 ,格式如下所示: 鍵必須是唯一的,但值則不必。 值可以取任何數據類型,但鍵必須是不可 ...
1.Python 字典(Dictionary)
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括弧({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變的,如字元串,數字或元組。
1.1創建字典
示例1
d = {"德瑪西亞之力": "蓋倫", "德邦總管": "趙信", } name = {"暗夜獵手": 2, 2: "薇恩" }
1.2訪問字典里的值
示例2:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2016/9/12 22:17 # @Author : wwyx d = {"德瑪西亞之力": "蓋倫", "德邦總管": "趙信", } name = {"暗夜獵手": 2, 2: "薇恩"} print "輸出 德瑪西亞之力 的名字:", d["德瑪西亞之力"] print "輸出 寒冰射手 的名字", d["寒冰射手"] # 沒有對應的值拋出異常
示例2 運行結果
輸出 德瑪西亞之力 的名字: 蓋倫 Traceback (most recent call last): 輸出 寒冰射手 的名字 File "E:/python/hello/untitled3/dictionary.py", line 9, in <module> print "輸出 寒冰射手 的名字", d["寒冰射手"] # 沒有對應的值拋出異常 KeyError: '\xe5\xaf\x92\xe5\x86\xb0\xe5\xb0\x84\xe6\x89\x8b'
註意:如果字典沒有對應的key值則會拋出異常,如上例運行結果
1.3字典添加元素
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對
示例3
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2016/9/12 22:17 # @Author : wwyx d = {"德瑪西亞之力": "蓋倫", "德邦總管": "趙信", } name = {"暗夜獵手": 2, 2: "薇恩"} print "輸出 德瑪西亞之力 的名字:", d["德瑪西亞之力"] d["寒冰射手"] = "艾希" # 添加新數據 print "輸出 寒冰射手 的名字", d["寒冰射手"] # 沒有對應的值拋出異常
示例3 運行如下
輸出 德瑪西亞之力 的名字: 蓋倫
輸出 寒冰射手 的名字 艾希
1.4刪除字典元素
示例4:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2016/9/12 22:17 # @Author : wwyx d = {"德瑪西亞之力": "蓋倫", "德邦總管": "趙信", } name = {"暗夜獵手": 2, 2: "薇恩"} print "輸出 德瑪西亞之力 的名字:", d["德瑪西亞之力"] d["寒冰射手"] = "艾希" # 添加新數據 print "輸出 寒冰射手 的名字", d["寒冰射手"] del d["寒冰射手"] # 刪除該值 print "刪除後 輸出 寒冰射手 的名字", d["寒冰射手"] # 沒有對應的值拋出異常
示例4 運行結果
輸出 德瑪西亞之力 的名字: 蓋倫 Traceback (most recent call last): 輸出 寒冰射手 的名字 艾希 File "E:/python/hello/untitled3/dictionary.py", line 12, in <module> 刪除後 輸出 寒冰射手 的名字 print "刪除後 輸出 寒冰射手 的名字", d["寒冰射手"] # 沒有對應的值拋出異常 KeyError: '\xe5\xaf\x92\xe5\x86\xb0\xe5\xb0\x84\xe6\x89\x8b'
2.字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住,如下實例:
示例 5
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2016/9/12 22:17 # @Author : wwyx d = {"德瑪西亞之力": "蓋倫", "德邦總管": "趙信", } name = {"暗夜獵手": 2, 2: "薇恩"} print "輸出 德瑪西亞之力 的名字:", d["德瑪西亞之力"] d["寒冰射手"] = "艾希" # 添加新數據 print "輸出 寒冰射手 的名字", d["寒冰射手"] d["寒冰射手"] = "凱瑟琳" # 修改數據 print "修改後 輸出 寒冰射手 的名字", d["寒冰射手"] # 沒有對應的值拋出異常
示例 5 運行結果
輸出 德瑪西亞之力 的名字: 蓋倫
輸出 寒冰射手 的名字 艾希
修改後 輸出 寒冰射手 的名字 凱瑟琳
2)鍵必須不可變,所以可以用數字,字元串或元組充當,所以用列表就不行
示例6
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2016/9/12 22:17 # @Author : wwyx name = {("暗夜獵手", "薇恩"): 2, 2: "薇恩"} print "輸出 元組為('暗夜獵手', '薇恩') 的名字:", name[("暗夜獵手", "薇恩")]
示例 6 運行結果
輸出 元組為('暗夜獵手', '薇恩') 的名字: 2
字典內置函數&方法
Python字典包含了以下內置函數:
序號 | 函數及描述 |
---|---|
1 | cmp(dict1, dict2) 比較兩個字典元素。 |
2 | len(dict) 計算字典元素個數,即鍵的總數。 |
3 | str(dict) 輸出字典可列印的字元串表示。 |
4 | type(variable) 返回輸入的變數類型,如果變數是字典就返回字典類型。 |
Python字典包含了以下內置方法:
序號 | 函數及描述 |
---|---|
1 | radiansdict.clear() 刪除字典內所有元素 |
2 | radiansdict.copy() 返回一個字典的淺複製 |
3 | radiansdict.fromkeys() 創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
4 | radiansdict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值 |
5 | radiansdict.has_key(key) 如果鍵在字典dict里返回true,否則返回false |
6 | radiansdict.items() 以列表返回可遍歷的(鍵, 值) 元組數組 |
7 | radiansdict.keys() 以列表返回一個字典所有的鍵 |
8 | radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default |
9 | radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict里 |
10 | radiansdict.values() 以列表返回字典中的所有值 |