TOP

python-day5

字典

  成对的保存数据,以key:value的形式保存

  用{}表示,每一项内容是不能重复的,储存是依靠着key来计算的

  字典是使用hash算法计算key的哈希值,使用哈希值来储存数据

  哈希算法得到的是一个唯一的数字(可能是正数,可能是负数,很大或者很小)

  哈希算法是无序的

  字典中的key必须是可哈希的,不可变的就是可哈希的

  不可变:字符串   元组 int bool 

  可变的: list  dict  set

  dic = {[]:"abc",}

  print(dic) # key不能重复, key必须是可哈希的(不可变) unhashable type: 'list' 列表可变,不可哈希

  字典的增删改查

 增

  dic = {}

  dic['王者荣耀'] = '荣耀王者'

  dic['A'] = '123'

  dic['A'] = '456'

  print(dic) #key如果重复就会被修改

  setdefault 先判断key是否存在,如果存在不进行新增,不存在执行新增

  dic.setdefault('宫本武藏','很牛b')

  dic.setdefault('宫本武藏','超级兵')#如果可以存在就不会再添加了

  dic.setdefault({'李白','坑'})#错误的

  dic[key] = value

  setdefault(key,value)

  

 删

  dic = {'A':'123','B':'456','C':'789'}

  dic.pop('A')

  dic.popitem()#删除最后一个,实际上是随机删除的

  #dic.clear()#清空字典

  del dic['B']

  print(dic)

  pop(key)

  popitem()

  del dic[key]

  clar()

 修改

  dic = {"张无忌":'倚天屠龙记', "紫薇":"还珠格格", "王语嫣":"天龙八部", "刘能":"乡村爱情协奏曲"}
  dic['王语嫣'] = "天龙九部" # dic[已经存在的key] = 新value
  print(dic)
  dic2 = {"张无忌": "魔教教主", "紫薇":"还珠格格第二部", "马大帅":"彪哥"}
  dic.update(dic2)# 把dic2中的内容覆盖到dic中
  print(dic)  dic[key] = value  dic1 = update(dict2)
查询

  dic = {'A':'123','B':'456','C':'789'}
  print(dic[D])#没有报错
  print(dic.get('D'))#返回None
  setdefault() #新增
  dic = {"jay":"周杰伦"}
  ret = dic.setdefault("jay_jj","林俊杰")
  print(dic, ret)
    dic[key]
    dic.get(key)
    dic.setdefaul()

常见操作  
  dic.keys() #key的集合
  dic.values() #value的集合  
  items()#键值对的集合(key,value)
  for k,v in dic.items():        
        k,v
  
字典的迭代
  
  for k in dic:
    
  print(k,dic[k])
  

字典的嵌套    

 

wf = {
    "name":"汪风",
    "age":42,
    "hobby":"抢头条",
    "代表作":["春天里","怒放的生命","北京 北京"],
    "wife_now":{
        'name':"长子怡",
        "age":62,
        "爱好":"打麻将"
    },
    "children": [{'id':1,"name":"汪汗"},{"id":2,"name":"汪才"}]
}
print(wf['wife_now']['爱好'])
# 汪峰的小儿子改名成  汪晓峰
wf['children'][1]['name'] = "汪晓峰"
print(wf)

 

 

  


  





  

  

  

 

  

posted on 2018-10-23 15:52  hui_T  阅读(142)  评论(0编辑  收藏  举报