python_dict(關聯數組的字典)

  第一次,看見字典這個東西,第一反應就像是關聯數組。字典是另外一種可變容器模型,且可存儲任意類型對象。數組

  字典比列表強大多了,列表查找個數據,還須要知道索引,若是數據大了,就很差找索引,用迭代出來費時費勁。spa

  字典的特性:1.無序的 2.天生去重code

  字典類型與序列類型的區別:對象

  1. 存取和訪問數據的方式不一樣。
  2. 序列類型只用數字類型的鍵(從序列的開始按數值順序索引);
  3. 映射類型能夠用其餘對象類型做鍵(如:數字、字符串、元祖,通常用字符串做鍵),和序列類型的鍵不一樣,映射類型的鍵直接或間接地和存儲數據值相關聯。
  4. 映射類型中的數據是無序排列的。這和序列類型是不同的,序列類型是以數值序排列的。
  5. 映射類型用鍵直接「映射」到值。

  1.增刪改查blog

  

 1 student_info = {  2     '001': {  3         'name': "libai",  4         'age': 22
 5  },  6     '002': {  7         'name': "dufu",  8         'age': 22
 9  } 10 } 11 # 查看
12 print(student_info['001']) 13 # {'age': 22, 'name': 'libai'}
14 
15 # 修改
16 student_info['001']['name'] = "luyou"
17 print(student_info['001']) 18 # {'name': 'luyou', 'age': 22}
19 
20 # 添加
21 student_info['001']['qq'] = 123456
22 print(student_info['001']) 23 # {'qq': 123456, 'name': 'luyou', 'age': 22}
24 
25 # 刪除
26 del(student_info['001']['qq']) 27 student_info['001'].pop('name') 28 print(student_info['001']) 29 # {'age': 22}

2.各類方法索引

 1 # 獲取 get() 沒有返回none,若是用這種方式 student_info['003'] 獲取不到值,會報錯
 2 v = student_info.get('001')  3 print(v)  4 # {'name': 'libai', 'age': 22}
 5 
 6 # update 若是存在相對應KEY 把對應鍵值覆蓋
 7 dict2 = {  8     'name': 'sushi',  9     '003': { 10         'name': "wangwie", 11         'age': 123
12  } 13 } 14 student_info.update(dict2) 15 print(student_info) 16 # {'003': {'age': 123, 'name': 'wangwie'}, '001': {'age': 22, 'name': 'libai'},
17 # 'name': 'sushi', '002': {'age': 22, 'name': 'dufu'}}

 1 # items()把字典變成元祖,數據量大的時候,轉換會很耗時
 2 print(student_info.items())  3 # dict_items([('name', 'sushi'), ('003', {'name': 'wangwie', 'age': 123}),
 4 # ('001', {'name': 'libai', 'age': 22}), ('002', {'name': 'dufu', 'age': 22})])
 5 
 6 # values()獲取全部的value已列表輸出
 7 print(student_info.values())  8 # dict_values([{'name': 'wangwie', 'age': 123}, {'name': 'dufu', 'age': 22}, {'name': 'libai', 'age': 22}, 'sushi'])
 9 
10 # key()獲取全部的key已列表輸出
11 print(student_info.keys()) 12 # dict_keys(['001', 'name', '002', '003'])
13 
14 # 查找key has_key()適用於2.0 3.0已經廢棄
15 # '001' in student_info
16 
17 
18 # 取一個key,若是不存在,默認添加一個k,v
19 print(student_info.setdefault('005', "hehe")) 20 # hehe
21 print(student_info) 22 # {'002': {'age': 22, 'name': 'dufu'}, 'name': 'sushi', '003': {'age': 123, 'name': 'wangwie'},
23 # '001': {'age': 22, 'name': 'libai'}, '005': 'hehe'}
24 
25 
26 # fromkeys()把列表中的每一個值拿出來看成字典的key,生成新的字典
27 print(dict.fromkeys([1, 23, 42], 'a')) 28 # {1: 'a', 42: 'a', 23: 'a'}
1 # 隨機刪除元素
2 print(student_info.popitem()) 3 # ('003', {'name': 'wangwie', 'age': 123})
4 
5 # 遍歷字典
6 for k,v in student_info.items():  # 效率低,由於有一個字典轉換列表的過程
7     print(k, v)
8 for key in student_info: 9 print(key, student_info[key])
相關文章
相關標籤/搜索