主要内容
1.字典的介绍
用大括号{}括起来,内部使用key:value来保存数据
在dict中存储的key-value中的key'必须是可hash的,哈希就是不可变的
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set
dic = {'jay':"周杰伦", "jj":"林俊杰", "eason":"陈奕迅"}
print(dic) ###对的
dic = {1: "马化腾", False:"阿里巴巴", "sylar":"帅的不行不行的", (1, "哈哈"): "元组", ["吼吼"]:"列表"}
print(dic) ###错的,列表不可以作为关键字
2.字典的增删改查
添加:
#两种方式添加 dic = {'jay':"周杰伦", "jj":"林俊杰", "eason":"陈奕迅"} print(dic) dic["ad"]="广告" #如果key已经存在,value会替代原来的值 print(dic) dic.setdefault("ad","广告")#如果key已经存在,不会起作用 print(dic)
删除
有四种方法:dic.pop("key") 通过关键词删除
del dic["key"]
dic.popitem() 随机删除
dic.clear() 清空
dic={"牌牌":"去哪了","小雪":"你快回来","雪雪":"又走了"} dic.pop("雪雪") print(dic)
dic={"牌牌":"去哪了","小雪":"你快回来","雪雪":"又走了"} del dic["雪雪"] print(dic)
dic={"牌牌":"去哪了","小雪":"你快回来","雪雪":"又走了"} dic.popitem() print(dic)
修改:
dic={"id":1,"name":"李嘉诚","money":100000} dic["money"]=dic["money"]-10000 print(dic)
dic.update()
dic1 = {"李晨":"范冰冰", "邓超":"孙俪", "王祖蓝":"李亚男"}
dic2 = {"李晨":"张馨予", "郑凯":"baby", "王宝强":"马蓉"}
dic1.update(dic2) # 把dic2中的内容更新到 dic1 , 如果存在了key. 替换. 如果不存在,添加
print(dic1)
print(dic2)
查找:查询一般用key来查找具体的内容
dic = {"及时雨":"宋江", "小李广":"花荣", "黑旋风":"李逵", "易大师":"剑圣"} dic["大宝剑"] = "盖伦" # 新增 dic["及时雨"] = "天老爷" # 修改 print(dic["易大师是个脑残"]) # 查询, 如果key不存在,报错 print(dic.get("易大师", "余小C")) # 如果key不存在. 返回None get() 可以通过key来获取value的值. 那么如果key不存在. 返回None. 可以给出一个默认值. 当key不存在的时候返回默认值
dic1={"谢娜":"张杰的老婆",'昆凌':'周杰伦的老婆','章子怡':'汪峰的老婆'} print(dic1.get('谢娜')) print(dic1['谢娜']) print(dic1['高圆圆']) #如果原来的字典中没有关键词,查询的时候会报错。 print(dic1.get('高圆圆')) #如果原来的字典中没有关键词,查询的时候会返回None print(dic1.get('高圆圆',2)) #如果原来的字典中没有关键词,查询的时候也可以设置默认值。 ret=dic1.setdefault('谢娜','赵又廷的老婆') print(ret) print(dic1)
dic.key() dic.value() dic.items()
dic = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"} print(dic.keys()) # 拿到所有的key, 返回key的集合. 像是列表. 但是不是列表 for key in dic.keys(): # 可以进行迭代循环 print(key)
dic = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"} print(dic.items()) # 拿到键值对 # 遍历dict for k, v in dic.items(): #这个是解构 print(k , v)
3.字典的嵌套
dic = { "name":"汪峰", "age": 58, "wife":{ "name":"国际章", "salary": 180000, "age": 37 }, "children":[ {"name":"老大", "age": 18}, {"name":"老二", "age": 118} ] } print(dic.get("wife").get("name")) print(dic["wife"]['salary'])
国际章 180000
字典的for循环:
dic = {1: 'a', 2:'b', 3:'c'}
for a in dic: # 直接循环字典.拿到的是key
print(a)
print(dic[a])
4. 考试题(注意dic.get()的使用,默认返回none)
# li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
# result = {}
# for row in li:
# if row < 66:
# s1 = result.get("k1")
# if s1 == None:
# result["k1"] = [row] #[row]容易出现错误
# else:
# result['k1'].append(row)
# else:
# s2 = result.get("k2")
# if s2 == None:
# result["k2"] = [row]
# else:
# result['k2'].append(row)
# print(result)