当前位置: 首页 > news >正文

python之字典类型内置方法

python之字典类型内置方法

文章目录

  • python之字典类型内置方法
    • 一、用途
    • 二、定义方式
    • 三、数据类型转换
    • 四、常用操作+内置方法
    • 优先掌握的操作(****)
      • .取值 .get( ) --->(寻找)
    • 需要掌握的操作()
      • 1.更新 .update( )
      • 2.清空 .clear( )
      • 3.初始化(造)一个字典模板 .fromkeys( )
      • 4.添加并返回值 .setdefaul( )
    • 五.总结

一、用途

  • key:value的形式存多个值
  • 优点:存取都快,每一个值都有对应的key

二、定义方式

  • 在“{}”内以逗号分隔开多个元素

  • 格式为key:value,其中key必须为不可变类型,value可以是任意类型

  • 字典类型对应的“工厂”就是dict

    dic = {"name" : "淘小欣","age" : 18}
    背后的操作就是
    dic = dict(name = "淘小欣", age = 18)
    

三、数据类型转换

res= dict([('k1',1111),("k2",2222),("k3",3333)])
print(res)

res=dict(x=111,y=222,z=333)
print(res)
.formkeys方法在下面“需要掌握的方法”里面详细介绍
res={}.fromkeys(["name","age","gender"],None)

四、常用操作+内置方法

优先掌握的操作(****)

  1. 按照key取值,可存可取

    "key" 存一个值
    dic = {"name":"shawn"}
    dic["age"] = 22
    print(dic)  #{'name': 'shawn', 'age': 22}
    
    也可以取值,改值
    dic["age"] = 18
    dic["name"] = dic["name"].upper()
    print(dic)  #{'name': 'SHAWN', 'age': 18}
    
  2. 长度:len()

    • 统计的是key的个数

    • 如果存在key相同的键值对,那么以后入的为主

      "key" 来决定个数
      dic = {"name":"shawn","age":22,"sex":"man"}
      print(len(dic))  # 3
      
      有两个 "age", 以后面的为主(就相当于你后面修改了"age"的值一样)
      dic = {"name":"shawn","age":22,"sex":"man","age":18}
      print(dic)  #{'name': 'shawn', 'age': 18, 'sex': 'man'}
      
  3. 成员运算innot in

    • 判断是不是字典的key

      dic={"name":"淘小欣""age":22,"sex":"man"}
      print("name" in dic) #True
      print("age" not in dic) #False
      
  4. 删除del、.pop()、.popitem

    • del : 直接删除"谁", 通用万能删除, 它不支持赋值语法, 赋值会报错

    • .pop() : 根据 key 进行删除, 返回的值是 key 对应的 value

    • .popitem() : 无参数, 随机删除一个键值, 返回一个元组, 元组里第一个值是 key, 第二个值是对应的 value

      "del"
      dic = {"name":"shawn","age":22,"sex":"man"}
      del dic["name"]
      print(dic)  #{'age': 22, 'sex': 'man'}
      
      ".pop", 会返回删除的 "value"
      res = dic.pop('age')
      print(res)  #22
      print(dic)  #{'sex': 'man'}
      
      ".popitem"返回的值是元组, ("key", "value")
      dic = {"name":"shawn","age":22,"sex":"man"}
      res = dic.popitem()
      print(res)  #('sex', 'man')
      print(dic)  #{'name': 'shawn', 'age': 22}
      
  5. 取值:键.keys(),值.values(),键值对.items()

    • .keys() : 只取 key

    • .values() : 只取 value

    • .items() : 既取 key, 又取 value

    • 以下加入 for 循环组合使用

      dic = {"name":"shawn","age":22,"sex":"man"}
      
      ".keys()"
      list=[]
      print(dic.keys())  #dict_keys(['name', 'age', 'sex'])
      for k in dic.keys():
          list.append(k)
      print(list)  #['name', 'age', 'sex']
      
      ".values()"
      list2 = []
      print(dic.values())  #dict_values(['shawn', 22, 'man'])
      for v in dic.values():
          list2.append(v)
      print(list2)  #['shawn', 22, 'man']
      
      ".items()"
      l1 = []; l2 = []
      print(dic.items())  #dict_items([('name', 'shawn'), ('age', 22), ('sex', 'man')])
      for k,v in dic.items():
          l1.append(k)
          l2.append(v)
      print(l1)  #['name', 'age', 'sex']
      print(l2)  #['shawn', 22, 'man']
      
    • Python2 当中的 键 .keys( ), 值 .values( ), 键值对 .items( ) 直接是列表输出的结果,比较占空间,而Python3中像是一只老母鸡, 想要就取一个

      "python2"中的字典取值
      >>> dic = {"name":"shawn","age":22,"sex":"man"}
      >>>
      >>> dic.keys()
      ['name', 'age', 'sex']
      >>>
      >>> dic.values()
      ['shawn', 22, 'man']
      >>>
      >>> dic.items()
      [('name', 'shawn'), ('age', 22), ('sex', 'man')]
      
  6. .取值 .get( ) —>(寻找)

    • 上面提到可以使用 “dic[key]” 这种方式取值, 但找不到会报错
    • .get() : 参数为 key, 找不到返回 None, 容错性更好
    dic = {"name":"shawn","age":22,"sex":"man"}
    
    ?"dic[key]"找不到报错
    res = dic["xxxx"]
    print(res)  #报错
    
    ?".get()"找到返回"value",找不到返回"None"
    res = dic.get("name")
    print(res)  #shawn
    res = dic.get("xxxx")
    print(res)  #None
    

需要掌握的操作()

1.更新 .update( )

  • 更新就是键值对的修改或增加
  • 就像一个软件, 新版本是在旧版本的基础上修改 BUG 或者增加功能
  • 对与老字典来说,更新指的是 : 新字典中有而老字典中没有则添加,新有而老也有则覆盖
dic = {"name":"shawn","age":22}

?修改了 "age", 增加了 "sex"
res = dic.update({"age":18,"sex":"man"})
print(dic)  #{'name': 'shawn', 'age': 18, 'sex': 'man'}

2.清空 .clear( )

dic = {"name":"shawn","age":22,"sex":"man"}
dic.clear()
print(dic)  #{}

3.初始化(造)一个字典模板 .fromkeys( )

  • 前一个参数是 key, 后一个参数是 value
  • 语法 : {}.fromkeys(['name','age','sex'],'xxxxxx')
?不使用 ".fromkeys" 建模板
good_info={
    'name':None,
    'price':None,
    'count':None
}

?使用 ".fromkeys()" 建模板
dic = {}.fromkeys(['name','age','sex'],None)
print(dic)  #{'name':None,'age':None,'sex':None}
  • 示例
?使用 "for" 循环
 list1=['name','price','count']
 dic={}
 for x in list1:
     dic[x]=None
 print(dic)  #{'name': None, 'price': None, 'count': None}
?使用 ".fromkeys()" 直接实现
dic = {}.fromkeys(list1,None)
print(dic)   #{'name': None, 'price': None, 'count': None}

?加入商品信息
'mac'  20000  10   #商品信息
dic['name']='mac'   #将商品信息加入到模板中
dic['price']=20000  #价格
dic['count']=10     #个数

4.添加并返回值 .setdefaul( )

  • 如果字典里有要添加的 key, 则不修改, 并返回 key 对应的原 value
  • 如果字典里没有要添加的 key, 则添加, 并返回添加的 key 对应的新 value
?添加存在的 "key"
dic={'name':'shawn','age':22}
res=dic.setdefault('name','SHAWN')
print('返回值:',res)   #返回值: shawn
print(dic)            #{'name': 'shawn', 'age': 22}

?添加不存在的 "key"
res=dic.setdefault('sex','man')
print('返回值:',res)   #返回值: man
print(dic)            #{'name': 'shawn', 'age': 22, 'sex': 'man'}

五.总结

  • 可以存多个值

  • 无序, 取值是按 “key” 取对应的 “value”

  • 可变类型—>不可 hash 类型

相关文章:

  • python集合类型内置方法
  • python文件处理之编码字符
  • python文件处理
  • 函数的基本使用
  • python之迭代器
  • python之三元表达式、生成式、生成器表达式
  • 面向过程编程思想与匿名函数及其应用
  • python之函数递归与调用
  • python之二分法
  • python之json模块
  • python之pickle模块
  • python之time与datetime模块
  • python之random模块
  • python之os模块
  • shutil模块
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 《剑指offer》分解让复杂问题更简单
  • 【391天】每日项目总结系列128(2018.03.03)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • CentOS 7 修改主机名
  • E-HPC支持多队列管理和自动伸缩
  • HTTP--网络协议分层,http历史(二)
  • java中具有继承关系的类及其对象初始化顺序
  • Python实现BT种子转化为磁力链接【实战】
  • Python学习之路16-使用API
  • Yeoman_Bower_Grunt
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 诡异!React stopPropagation失灵
  • 基于HAProxy的高性能缓存服务器nuster
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 面试遇到的一些题
  • 让你的分享飞起来——极光推出社会化分享组件
  • 设计模式走一遍---观察者模式
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 积累各种好的链接
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • $ git push -u origin master 推送到远程库出错
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (循环依赖问题)学习spring的第九天
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • **PHP分步表单提交思路(分页表单提交)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .bat批处理(一):@echo off
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net Core 中间件验签
  • .NET 中创建支持集合初始化器的类型
  • .NET与java的MVC模式(2):struts2核心工作流程与原理