python---基本数据类型 dict(字典)

1. 什么是字典

    字典是python中唯一的映射类型, 由{ } 括起来的键值对组成,在dict中key是唯一的.字典是以key:value的形式来保存数据, 字典存储数据的时候是用的hash值来存储. 算法不能变(python的)

      数据必须是不可变的(可哈希). 字典的key必须是可哈希的(不可变).

      已知的可哈希的(不可变)的数据类型: int , str , tuple , bool

      不可哈希(可变)的数据类型: list , dict , set

 

         语法:     

       dict = {key: value, key: value ... }     

    注意:     

      key必须是不可变(可哈希)的, value没有要求,可以保存任意类型的数据

 

2. 字典的增删改查

    dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的. 而hash表不是连续的.

  所以不能进行切片工作,它只能通过key来获取dict中的数据

  1.增加

  dic[key] = 值
    dic.setdefault(key)


    dic = {}
    dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组
    合进dict
    dic['age'] = 18
    print(dic)
    # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
    dic.setdefault('李嘉诚') # 也可以往⾯设置值.
    dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会
    起作⽤
    print(dic) 

  2.删除(pop , popitem 随机删除, clear 清空)

ret = dic.pop("joy")
    print(ret)
   
  del dic["jay"]
  print(dic)
    
  # 随机删除. 
  ret = dic.popitem() 
     
  # 清空字典中的所有内容 
  dic.clear()

  3. 改 ( update )

  .update()
  dic = {"id": 123, "name": 'sylar', "age": 18} 
  dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"} 
  dic.update(dic1) 
  # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存 在key, 则新增. 
  print(dic) 
  print(dic1)

  4. 查询

  print(dic['name']) # print(dic['t']) 
  # 报错 print(dic.get("ok")) print(dic.get("t")) 
  # None print(dic.get("t", "⽜B")) 
  # ⽜B

  5. 字典的其他相关操作

. keys() 获取到所有的键
. values() 获取到所有的值
. items() 拿到所有的键值对

#解构, 注意数量必须匹配
a , b = 1, 2
print(a , b)

(c , d) =  3 , 4
print( c , d)

 

3. 字典的嵌套   

  字典的嵌套. 字典套字典

# 字典的嵌套  .get(key) 根据key取value 
dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章子怡',
"age": 28
},
"children": ['第一个毛孩子', '第⼆个毛孩子'],
"desc": '峰哥不不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])

5. 集合(不重要). 去重复

  集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key
  空集合:set()
  空元组:tuple()
  空列表:list()
  非空集合: {123}集合, 集合其实就是不存value的字典

# 遍历字典两套方案
dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
# 1. 使用for循环直接遍历字典的key
# for key in dic:
#     print(key)
#     print(dic[key])


# 2. 可以使用字典的items()+解构可以直接获取到key和value
# for k, v in dic.items():
#     print(k)
#     print(v)

 

posted @ 2018-11-30 20:45  robertx  阅读(336)  评论(0编辑  收藏  举报