05 dic的增删改查 字典的嵌套 考试题dic.get()的相关使用

主要内容

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)

  

 

  

 

      

  

原文地址:https://www.cnblogs.com/gyh412724/p/9275416.html