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

摘要:
打印#如果原始字典中没有关键字,查询将返回Noneprint#如果原始词典中没有关键字的话,查询时也可以设置默认值。

主要内容

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)

  

 

  

 

      

  

免责声明:文章转载自《05 dic的增删改查 字典的嵌套 考试题dic.get()的相关使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python匿名函数简记如何注册interceptor、Servlet、Listener、Filter下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Redis删除特定前缀key的优雅实现

    还在用keys命令模糊匹配删除数据吗?这就是一颗随时爆炸的炸弹! Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案 redis-cli --raw keys "ops-coffee-*" | xargs redis-cli del 直接在linux下通过redis的k...

Linux之sshkey密钥认证实战

  在实际的生产环境中,经常会用到sshkey密钥认证实行数据分发数据等操作,还可以批量操作内网服务器,实行免密认证进行推送分发数据。 1、环境查看 分发服务器   节点服务器 2、服务器添加系统账号 3、生成密钥对 [root@localhost1 ~]# su - fenfa [fenfa@localhost1 ~]$ whoami fe...

Redis bigkey分析

一 现象 某个业务最近2个月每月1号凌晨0点都有业务高峰,但是业务所使用的 Redis 服务 cpu 负载100% ,无法对外提供服务进而影响整体业务访问。 二 分析 2.1 问题分析 因为该业务使用的是云Redis ,我们通过监控看 CPU,QPS ,带宽。   出现问题时系统的QPS 大约为 1200 左右,但是对应时刻的出口带宽竟然达到500MB...

Django前端获取后端数据之前端自定义函数

在写网站的时候遇到了一个问题: Django在后端向前端传数据时,多数会使用dict字典来传送多个数据,但前端只能遍历,没有一个用key取到value值的方法可以直接使用 如果作为一个list传递到前端,结构相同情况下,遍历确实够用。但是使用dict时多数会使用单个key取value放到不同的地方使用,Django提供的方法就不够用了。 所以这篇文章介绍一...

django-QueryDict 对象

  在 HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例。这是一个 django 自定义的类似字典的类,用来处理同一个键带多个值的情况。   在 python 原始的字典中,当一个键出现多个值的时候会发生冲突,只保留最后一个值。而在 HTML 表单中,通常会发生一个键有多个值...

redis基本操作和 过期时间设置以及持久化方案

Redis是NOSQL阵营中的一种数据库,主要用于存储缓存 五大数据类型:字符串(String)、散列(hash)、列表(list)、集合(set)、有序集合(SortedSett 、zset) String:   set key value    键值对存储值 get key      通过键获取值 keys *        查看所有键 incr ke...