python資料類型之字典,python資料類型
字典定義
字典是一種 key-value 的資料類型,這點很重要,是區別使用列表和字典的依據。
文法格式:
info = { 'stu1101': "Aaron", 'stu1102': "Jim", 'stu1103': "Jack",} 字典的特性
- dict是無序的
- key必須是唯一的,所以字典具有天生去重
- 與索引值向關聯的值可以是數字,字串和列表
字典操作字典值訪問
>>> "stu1102" in info #標準尋找用法True>>> info.get("stu1102") #擷取'Jim'>>> info["stu1102"] #同上,但是看下面'Jim'>>> info["stu1105"] #如果一個key不存在,就報錯,get不會,不存在只返回NoneTraceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'stu1105'字典值添加
>>> info["stu1104"] = "West">>> print(info){'stu1102': 'Jim', 'stu1104': 'West', 'stu1103': 'Jack', 'stu1101': 'Aaron'} 字典值修改
>>> info["stu1103"] = "West">>> print(info){'stu1102': 'Jim', 'stu1104': 'West', 'stu1103': 'JacWest'} 字典值刪除
>>> info{'stu1102': 'Jim', 'stu1103': 'Jack', 'stu1101': 'Aaron'}>>> info.pop("stu1101") #標準刪除姿勢'Aaron'>>> info{'stu1102': Jim', 'stu1103': 'Jack'}>>> del info['stu1103'] #永久刪除>>> info{'stu1102': 'Jim'}>>> info = {'stu1102': 'Jim', 'stu1103': 'Jack'}>>> info{'stu1102': 'Jim', 'stu1103': 'Jack'} #隨機刪除>>> info.popitem()('stu1102', 'LongZe Luola')>>> info{'stu1103': 'XiaoZe Maliya'} 字典遍曆
遍曆分為三種,遍曆索引值對,遍曆鍵和遍曆索引值。需要注意的是,在遍曆字典時預設是遍曆所有的鍵。在下面的曆程中“for key in info.keys():”,可以改為“for key in info:”,但顯示的調用方法keys(),代碼的可讀性更強。
info = { 'stu1101': "Aaron", 'stu1102': "Jim", 'stu1103': "Jack",}#遍曆索引值對for key,value in info.items(): print("\nkey:"+key) print("value:"+value)#輸出:key:stu1101value:Aaronkey:stu1102value:Jimkey:stu1103value:Jack#遍曆鍵for key in info.keys(): print("key:"+key)#輸出:key:stu1101key:stu1102key:stu1103#遍曆索引值for value in info.value(): print("value:"+value)#輸出:value:Aaronvalue:Jimvalue:Jack
由字典的特性知,字典是無序的。但有以特定順序擷取鍵和索引值的需求,這可以利用sort方法來實現。
info = { 'stu1101': "Aaron", 'stu1102': "Jim", 'stu1103': "Jack",}for key in sorted(info.keys()) print("key:"+key)#輸出:key:stu1101key:stu1102key:stu1103字典嵌套
字典的索引值可以嵌套數字,列表和字典。同樣的,還有列表的嵌套,我說的是在列表中嵌套字典。具體使用哪種嵌套的資料類型,關鍵是要把握好列表和字典各自的特性。對於列表來說,列表中的元素描述的應該對應的是同一種屬性,比如,要對披薩字典的描述,其中,披薩的配料就不止是一個值能表示,因此,這個字典的索引值就是一個列表,即字典嵌套列表;對於字典來說,把握好索引值對的理解就好,它們是一一對應的。字典嵌套的使用,痛點不是在如何操作,而是能不能設計一個合理的建模模型。
字典嵌套的訪問問題
不管是誰嵌套誰,列表和字典的訪問都是通過“[]”來實現的,唯一不同是“[]”中的是索引,還是鍵的問題。
#字典嵌套列表pissa = { 'crust':'thick', 'toppings':['mushrooms','extra','cheese'],}print(pissa['toppings'][2])#輸出:cheese#列表嵌套字典people_info = [ {'name':'Aaron','age':'24'}, {'name':'Jim','age':'25'},]print(people_info[1]['name'])#輸出:Jim