zoukankan      html  css  js  c++  java
  • 类型与运算三

    一、字典(dict)

    1. 格式

      以{}表示,每一项用逗号隔开,内部元素用key:value的形式来保存数据:

      dic{"key":"value","key2":"value2"}

      key:必须是可哈希的(不可变的),并且是唯一的

      value:任意值

      字典是无序的(3.6默认了定义顺序),可变的(可增删改查)

    2. 作用

      2.1 用于存储大量数据,比列表还要大的,但比较消耗内存

      2.2 字典能够将数据与数据进行关联,有明确对应关系时推荐使用字典

      2.3 通过key来查找元素,查询效率高

      2.4 hash算法:key必须时不可变的数据类型

    3. 字典的使用方法

      方法 作用
      1.增
      dic["key"] = "value" 直接用key往里面存数据即可,如果key存在会替换掉原来的value,可用于修改。
      dic.setdefault("key","value") 首先查看要添加的键存不存在,如果不存在,就执行新增;如果存在key,不会执行新增
      2.删
      dic.pop("key") 通过键删除,有返回值,返回的时被删除的值
      del dic["key"] 删除指定键值对
      dic.clear() 清空
      3.改
      dic["key"] = "value" 如果键在字典中存在就修改,不存在就添加
      dic.update(dic2) 将dic2按key添加到dic中,若dic中key存在则替换成dic2中的value,如果key 不存在则直接添加到dic。括号里的字典级别高
      4.查
      dic["key"] 通过键获取值,不能通过值获取键,如果存在key就返回对应的值,如果不存在就报错
      dic.get("key","可制定返回值") 获取,获取值的时候可以指定返回的内容,键不存在的时候不报错
      dic.setdefault("key","value") 首先新增(先看有没有key,如果有就过,如果没有,执行新增),然后根据key把值返回
    4. 相关操作

      4.1 解构

      a = 1
      b = 2
      a,b = b,a
      结果:
      a=2,b=1
      
      a,_,c = "你好啊"  #字符串解构
      print(a,c)
      结果:
      你 啊
      
      a,b = ("1","2")   #元组解构
      print(a,b)
      结果:
      1 2
      
      a,b = ["4","5"]		#列表解构
      print(a,b)
      结果:
      4 5
      
      a,b = {"a":1,"b":2,}		#字典解构
      print(a,b)
      结果:
      a b
      

      4.2 dic.keys() 拿到字典的key

      dic.values() 拿到字典的value

      dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"}#对字典的遍历
      print(dic.keys())   # dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表,可以for循环但不能索引
      for key in dic.keys():
          print(key)  # 拿到key
          print(dic[key]) # 拿到value
      

      4.3 dic.items() 拿到key和value,每一项为一个元组

      dic = {"1":1,"2":2,"3":3,"4":4}
      print(dic.items())
      结果:
      dict_items([('1', 1), ('2', 2), ('3', 3), ('4', 4)])
      
      dic = {"1":1,"2":2,"3":3,"4":4}
      for item in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
          print(item) # 元组
          print(item[0],item[1])
      结果:
      ('1', 1)
      1 1
      ('2', 2)
      2 2
      ('3', 3)
      3 3
      ('4', 4)
      4 4
      

      通过key和value解构可写成:

      dic = {"1":1,"2":2,"3":3,"4":4}
      for k, v in dic.items(): #拿到元组类型的键值对,然后进行解构
          print(k,v) 
      结果:
      1 1
      2 2
      3 3
      4 4
      
      dic = {"1":1,"2":2,"3":3,"4":4}
      for i in dic:        # 效率高
          print(i,dic[i])
      

      4.5 效率问题

      import time
      dic = {"1":1,"2":2,"3":3,"4":4}
      s = '3'
      s = time.time()
      if s in  dic.keys():   #列表  --   [1,2,3,4,5]   中查找s 效率高
          pass
      print(time.time() - s)
      
      s1 = time.time()
      for i in dic:
          if s == i:
              pass
      print(time.time() - s1)
      

      4.6 enumerate() 枚举

      dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111}
      count = 1                 
      for i in dic:
          print(count,i)
          count += 1
      #直接使用enumerate()    
      for i,k in enumerate(dic,1):  # 其中第二个参数默认不写就是0    -- 枚举
          print(i,k)
      结果:
      1 电脑
      2 手机
      3 耳机
      4 老婆
      
    5. 字典的嵌套

      wf = {
          "name": "汪峰",
          "age": 48,
          "成名曲": "春天里",
          "wife": {
              "name": "章子怡",
              "age": 39,
              "工作": "演员"
          },
          "children":[
              {"num": "001", "name": "汪一", "hobby": "唱歌"},
              {"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
          ]
      }
      wf['wife']['age'] = wf['wife']['age'] + 10
      print(wf)
      结果:
      {'name': '汪峰', 'age': 48, '成名曲': '春天里', 'wife': {'name': '章子怡', 'age': 49, '工作': '演员'}, 'children': [{'num': '001', 'name': '汪一', 'hobby': '唱歌'}, {'num': '002', 'name': '汪二', 'hobby': '演戏'}]}
      
      
  • 相关阅读:
    盯盘的基本技巧
    教你一招短线选股法
    卖咖啡8.0i企业版,详细设置规则。让杀毒软件发挥真正的作用!
    PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
    mysql乱码处理一则
    word2007怎样显示预览快速打印按扭
    一个简单功能强大的Google Map 搜索源码
    Google和百度、雅虎的站内搜索代码
    FCKeditor 2.5 使用方法 配置ASP上传功能 & PHP实例:FCKeditor2.6 的配置和使用方法
    PHP获取当前url路径的函数及服务器变量:QUERY_STRING、REQUEST_URI、SCRIPT...
  • 原文地址:https://www.cnblogs.com/yaoqi17/p/10999297.html
Copyright © 2011-2022 走看看