1 dic = {"name" : "wangmo" ,"age" : 18} 2 3 #dic.clear() #清空字典 4 print(dic) 5 #{} 6 7 dic1=dic.copy() #復制字典 8 print(dic1) 9 #{'name': 'wangmo', 'age': 18} 10 11 dic1=dict.fromkeys("hello",1) #快速生成字典 12 print(dic1) 13 #{'o': 1, 'h': 1, 'l': 1, 'e': 1} 14 15 print(dic.get("name")) #查看字典中是否存在此key,沒有提示none 16 #wangmo 17 18 print(dic["name"]) #查看字典中是否存在此key,沒有會報錯 19 #wangmo 20 21 print(dic.items()) #將每對key-value表示成列表中元組的形式 22 #dict_items([('name', 'wangmo'), ('age', 18)]) 23 24 for i in dic.items(): #循環輸出每個項目 25 print(i) 26 # ('name', 'wangmo') 27 # ('age', 18) 28 29 for k,v in dic.items(): #循環輸出每個項目 30 print(k,v) 31 # name wangmo 32 # age 18 33 34 print(dic.keys()) #輸出字典的key值 35 #dict_keys(['name', 'age']) 36 37 for i in dic.keys(): #循環輸出字典的key值 38 print(i) 39 # name 40 # age 41 42 for i in dic.keys(): #可以循環輸出key和value 43 print('key is %s,value is %s' %(i,dic[i])) 44 # key is age,value is 18 45 # key is name,value is wangmo
1 dic = {"name" : "wangmo" ,"age" : 18} 2 3 #dic.pop("name") #刪除一個一對key-value,沒有會報錯 4 print(dic) 5 #{'age': 18} 6 7 #dic.popitem() #隨機刪除一對key-value,一般不用 8 print(dic) 9 #{'name': 'wangmo'} 10 11 dic.setdefault("gender","M") #如果鍵不已經存在於字典中,將會添加鍵並將值設為默認值 12 print(dic) 13 dic.setdefault("gender","W") 14 print(dic) 15 # {'gender': 'M', 'name': 'wangmo', 'age': 18} 16 # {'gender': 'M', 'name': 'wangmo', 'age': 18} 17 18 dic.setdefault('gender1',[]) #也可以接一個列表 19 print(dic) 20 dic.setdefault('gender1',[]).append('male') 21 print(dic) 22 # {'gender1': [], 'name': 'wangmo', 'age': 18, 'gender': 'M'} 23 # {'gender1': ['male'], 'name': 'wangmo', 'age': 18, 'gender': 'M'}
1 dic={'name':"wangmo",'gender':'?'} 2 dic1={'gender':'male'} 3 4 dic.update(dic1) #用dic1更新dic 5 print(dic) 6 #{'name': 'wangmo', 'gender': 'male'} 7 8 dic1={'gender':'male','age':25} 9 dic.update(dic1) #用dic1更新dic 10 print(dic) 11 #{'gender': 'male', 'age': 25, 'name': 'wangmo'} 12 13 print(dic1.values()) #打印value 14 #dict_values([25, 'male'] 15 16 for i in dic1.values(): #循環打印value 17 print(i) 18 # 25 19 # male 20 21 data = dic.fromkeys([1,2,3]) #創建一個新字典,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值 22 print(data) 23 #{1: None, 2: None, 3: None} 24 25 data = dic.fromkeys([1,2,3],'mo') #后面的value都一樣 26 print(data) 27 #{1: 'mo', 2: 'mo', 3: 'mo'} 28 29 data = dic.fromkeys([1,2,3],{'name':'mo','age':'25'}) #后面接一個字典 30 print(data) 31 data[1]['name']='MM' #只要改了一位,其他value都改了 32 print(data) 33 #{1: {'age': '25', 'name': 'mo'}, 2: {'age': '25', 'name': 'mo'}, 3: {'age': '25', 'name': 'mo'}} 34 #{1: {'name': 'MM', 'age': '25'}, 2: {'name': 'MM', 'age': '25'}, 3: {'name': 'MM', 'age': '25'}}
1 dic={'name':'mo','age':25,'gfs':['a','b','c']} #這里涉及一個淺copy問題,只copy第一層 2 dic2=dic.copy() #字典的copy 3 print(dic) 4 # {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'} 5 print(dic2) 6 # {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'} 7 dic2['name']='oo' #更改一個value值 8 print(dic,dic2) 9 # {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'} {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'oo'} 10 dic2['gfs'][2]='d' #更改value列表中的一個值 11 print(dic,dic2) 12 # {'age': 25, 'gfs': ['a', 'b', 'd'], 'name': 'mo'} {'age': 25, 'gfs': ['a', 'b', 'd'], 'name': 'oo'} 13 print(id(dic),id(dic2)) #打印id,都是通過內存地址改列表 14 #1933523997768 1933523997896 15 print(id(dic['gfs']),id(dic2['gfs'])) #第二層的id就是一樣的了 16 #2108201311816 2108201311816 17 18 19 #深copy 20 import copy 21 dic3=copy.deepcopy(dic) 22 print(dic3) 23 #{'name': 'mo', 'gfs': ['a', 'b', 'd'], 'age': 25} 24 print(id(dic['gfs']),id(dic2['gfs']),id(dic3['gfs'])) #深copy的id變了 25 #1541085601352 1541085601352 1541087074824 26 27 28 #淺copy的一個場景: 29 acc1={'name':'林海峰','account':{'credit':3000,'balance':3000}} 30 acc2=acc1.copy() 31 acc2['name']='杠娘' 32 print(acc1) 33 print(acc2) 34 acc2['account']['credit'] -= 600 35 print(acc1) 36 print(acc2) 37 # {'name': '林海峰', 'account': {'credit': 3000, 'balance': 3000}} 38 # {'name': '杠娘', 'account': {'credit': 3000, 'balance': 3000}} 39 # {'name': '林海峰', 'account': {'credit': 2400, 'balance': 3000}} 40 # {'name': '杠娘', 'account': {'credit': 2400, 'balance': 3000}} 41 42 for k,v in acc1.items(): #輸出key,value,數據量大不好用 43 print(k,v) 44 # name 林海峰 45 # account {'credit': 2400, 'balance': 3000} 46 47 for k in acc1: #輸出key 48 print(k) 49 # name 50 # account 51 52 for k in acc1: 53 print(k,acc1[k]) 54 # account {'balance': 3000, 'credit': 2400} 55 # name 林海峰 56 #多用這個,item需要轉換,數據量大不好用