python中的基本数据类型之字典

 一.字典的简单介绍

 字典是(dict)是python中唯一的一个映射类型,他是以{}括起来的键值对组成,在字典中key是惟一的,在保存的时候,根据key来计算出一个内存地址,而后将key-value保存保存在这个地址中,这种算法被称为hash算法,因此在字典中存储的key-value必须是可合适 hash的,(能够改变的都是不可hash的,hash意味着不可变)这是为了可以准确的计算内存地址而规定的.python

不可变的数据类型:int,str,tuple,bool算法

可变的数据类型:list,dict,setspa

value没有要求,能够保存任意类型的数据.code

1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'} 2 print(dic) 3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

语法:{key1:value1,key2:value2......}  blog

1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'} 2 print(dic) 3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

二,字典的增删改查和其余操做

 1.增长

1.1 dic['key']='value'  内存

1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'} 2 print(dic) 3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
1.2
 1  ⑴dic.setdefault('key')           #往字典里添加一个key,value默认为None,若是key已经存在,不会起任何做用
 2     ⑵dic.setdefault('key','value')   #往字典里添加一个key-value
 3   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}  4   dic.setdefault('李嘉诚')  5   print(dic)  6   #{132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉诚': None} #(1)
 7 
 8   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}  9   dic.setdefault('李嘉诚','房地产') 10   print(dic) 11   # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉诚': '房地产'} #(2)
12  
13   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 14   dic.setdefault(132,'房地产') 15   print(dic) 16   # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} #若是key已经存在,不会起任何做用

2.删除

2.1 dic.pop('key')
 
dic.pop('key')   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}   ret=dic.pop(132)       #经过key删除 返回被删除的value
  print(ret)             #若是key不存在会报错
  print(dic)   # 45
  # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.2 del dic['key']  
1 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 2   del dic[132] 3   print(dic) 4   # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.3 dic.popitem()  
1 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 2   del dic[132] 3   print(dic) 4   # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.4 dic.clear()  
1 dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'} 2   dic.clear() 3   print(dic) 4   # {} #获得的是一个空的字典

3.修改

3.1
1 dic[key]=value 强制修改 2   dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'} 3   dic[132]=789
4   print(dic) 5   # {132: 789, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
 
3.2 dic1.update(dic)
1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2 dic1={1:'a',2:'b',132:46} 3 dic.update(dic1)     #把dic 1中的内容更新到dic中,若是key重复,则修改替换,若是key不存在,就新增.
4 print(dic) 5 # {132: 46, '地方规划局': 999, 'ig': 1, (1, 2, 3): 'nje', 1: 'a', 2: 'b'}

4.查

4.1 dic.get(key)字符串

 
1 dic.get(key) 2   dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'} 3   print(dic.get(13,'好像虎'))    #找不到key返回None,或者指定返回内容
4   #好像虎
 
4.2 dic[key]
1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2   print(dic[132])      #45
3   print(dic[12])     #KeyError: 12 没有这个键的时候查询会报错
4.3 for循环
1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2 for i in  dic:      #循环默认是去字典中的键
3         print(i) 4         # 132
5         # 地方规划局
6         # ig
7         # (1, 2, 3)

5.字典的其余操做

5.1 keys();values();items()get

1 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2   print(dic.keys())  # (高仿列表) 高仿列表暂时能够当作真的列表用,也能够迭代
3   print(dic.values())  # (高仿列表)
4   print(dic.items())    #也是高仿的列表,只不过里面装的是元组
5   # dict_keys([132, '地方规划局', 'ig', (1, 2, 3)])
6   # dict_values([45, 999, 1, 'nje'])
7   # dict_items([(132, 45), ('地方规划局', 999), ('ig', 1), ((1, 2, 3), 'nje')])
5.2 解构(解包)
 1 a,b = '12'  #将后边解构打开按位置赋值给变量 支持 字符串 列表 元组
 2   print(a)  3   print(b)  4   # 1
 5   # 2
 6 
 7   dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}  8   for a,b in dic.items():  9       print(a) 10       print(b) 11       # 易大师
12       # 剑圣
13       # 剑豪
14       # 托儿所
15       # 草丛伦
16       # 大宝剑
17 
18   dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} 19   for key,value in dic.items(): 20       print(key,value) 21   # 易大师 剑圣
22   # 剑豪 托儿所
23   # 草丛伦 大宝剑
 

三,字典的嵌套

1 dic = {'name':'汪峰','age':43,'wife':{'name':'国际章','age':39,'salary':100000},'baby':[{'name':'熊大','age':18},{'name':'熊二','age':15},]} 2 
3 dic['baby'][0]['age'] = 19
4 print(dic)
相关文章
相关标签/搜索