happy_boy 发表于 2018-8-9 10:49:55

Python09 字典

  字典包含了key和value
  其中key是不可变的,value隶属于key是可以变的
  字典是无序的,字典没有下标,通过key来寻找value
  

test = {'A':1,'B':'zhangsan','C':'lisi'}  
print (test)
  




[*]查找
  

test = {'A':1,'B':'zhangsan','C':'lisi'}  

  
print (test['B'])
  


  可以通过key、来查找值
  

print(test.get('C'))  
print(test.get('F'))
  


  通过get来查找,有就打印value,没有就打印None
  使用get是一个比较安全的查找方式,如果查不到会返回None值,这样执行代码不会报错
  

print ('C' in test)    #这个类似python2.X中的test.has_key('C'),python3中已经没有has_key了  


  

print (test.keys())  
print (test.values())
  


  查找所有key和查找所有value


[*]修改
  

test = {'A':1,'B':'zhangsan','C':'lisi'}  

  
test ['C']=33
  
test ['D']=44
  

  
print(test)
  


  根据key修改value ,存在则修改,不存在则新增
  

test1 = {'A':{'AA':111},'B':222}  
test2 = {'B':123,'C':333}
  

  
test1.update(test2)
  
print (test1)
  


  将两个字典合并,已存在的key会被覆盖,没有则新增
  

test1 = {'A':{'AA':111},'B':222}  
print (test1.items())
  


  将字典转成列表


[*]删除
  

test = {'A':1,'B':'zhangsan','C':'lisi'}  

  
del test['A']
  

  
print (test)
  


  

print(test.pop('B'))#pop删除并返回删除的内容  


  使用pop删除后,会返回删除的值
  

test = {'A':1,'B':'zhangsan','C':'lisi','D':4,'E':5}  
test.popitem()
  
print (test)
  


  使用popitem会随机删除一个(好像删除的是最后一个)


[*]多级字典
  

test = {'A':{'AA':}}      #三级嵌套,本实例是两个字典,一个列表  

  
print (test)
  


  

test['A']['AA']=789  
print (test)
  




[*]  setdefault
  

test = {'A':1,'B':2,'C':3}  
test.setdefault('C',{'CCC':333})
  
test.setdefault('D',{'DDD':444})
  
print (test)
  


  setdefault到字典中获取key的值并返回,如果没有则新增

[*]fromekeys  

a = dict.fromkeys(['A','B','C'])  
print(a)
  


  创建一个新的字典,然后批量创建字典的key,默认value为None,可以修改None,通过批量建立key,这样减少了一半建立字典的工作量。

  

test = {'A':1,'B':2,'C':3}  
a = test.fromkeys(['AA','BB','CC'])
  
print (a)
  


  将现有的字典给修改了
  

test = {'A':1,'B':2,'C':3}  
a = test.fromkeys(['AA','BB','CC'],'123')
  
print (a)
  


  可以批量赋予key的value
  

print (test)  


  其实可以看到test并没有改变,也就是说fromkeys不会改变现有的字典
  fromkeys只会初始化一个新的字典
  

a = dict.fromkeys(['A','B','C'],)  
print(a)
  


  批量为字典key A、B、C赋值
  

a['C']['name']='Peter'      #修改A字典C这个key的value  
print(a)
  


  但实际看到的是,所有key的value都被修改了
  这是因为当使用fromkeys,设置多级字典时,value使用的是同一个内存地址,所以当修改一个的时候,其他也就都被修改了。


[*]循环
  

test = {'A':1,'B':2,'C':3}  
for i in test:
  print (i,test)            、
  

  
#打印的第一个i是循环只是将所有key赋值给i,所以在打印第一个i的时候,仅仅打印的是这个i的赋值,并不是字典;
  

  
但是打印的第二个test就是打印字典了,和你直接使用print test['A']是一样的,只不过这里将A、B、C这三个key对饮的值都打印了一遍
  


  循环打印字典
  

for k,v in test.items():  
#.items将字典变成列表,也就是['A',1],k对应的这个A,v对应这个1,然后就这样赋值循环;
  

  
这种方式没有上面的好,因为需要不断的将字变成程列表,再去循环
  
print(k,v)
  

页: [1]
查看完整版本: Python09 字典