python notice3

字典:字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中.这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key必须是可hash的,同时在一个字典中键是唯一的。目前可哈希的数据类型:int、str、tuple、bool。不可哈希的数据类型:list、dict、set。

  语法:{key1: value1, key2: value2....}    注:键值对是无序的,故不可以进行切片操作。

1.增

  dict[key] = value  如果key不存在,就会新增一个键值对;如果key存在,就会替换对应的value。

  dict.setdefault(key,value)  如果key不存在,会增加一个键值对;如果key存在,setdefault不会起作用。

2.删

  dict.pop(key)  删除指定的key-value,同时返回对应的value

  del dict[key]  删除指定的key-value

  dict.popitem()  随机删除key-value,同时返回key-value。

  dict.clear()   清空字典内容

3.改

  dict[存在的key] = 新值,

  d1.update(d2)   把d2中的内容更更新到d1中. 如果key重名. 则修改替换. 如果不存在key, 则新增.

4.查

  dict[key]  可以直接查,若key不存在,会报错。

  dict.get(key)   直接查,若key不存在,返回None,或者dict.get(key,返回值),设定返回值。

  dict.setdefault(key,value)  如果key不存在,会增加一个键值对,同时返回对应的值;如果key存在,返回本身存在的value。

5.其他相关操作

  dict.keys()  获取到字典所有的key,然后存在一个高仿的列表中,可以用for循环遍历

  dict.values()  获取到字典所有的value,然后存在一个高仿的列表中

  dict.items()  获取到字典所有的键值对,然后以元组的形式存在一个高仿的列表中

    解构\解包  a, b = 1, 2; a, b = (1, 2);a, b = [1, 2]  循环遍历元组等时更方便

6.字典的嵌套

 eg:dic1 = {
    "name": "小明",
    "age": 28,
    "wife": {
      "name": '小红',
      "age": 28
       },
    "children": ['第⼀个毛孩', '第⼆个⽑孩'],
      }
  print(dic1.get("wife").get("name"))

  print(dic1.get("children"))
  print(dic1.get("children")[1])

 7.==和is的区别

  ==  比较两边变量的值是否相等

  is   比较两边变量的内存地址是否相等  注:查询变量地址print(id(变量))

  补充is使用时地址:   

    # 数字小数据池的范围  -5 ~ 256,当数字在这范围内,is两边地址相等

    # 字符串中如果有特殊字符他们的内存地址就不一样

    # 字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致

  注:两者的区别只能在终端执行时才可以对比出来,pycharm不可以,一个py文件中所有相同的字符串一般都是使用一样的内存地址。

8.编码和解码

  encode(编码方式)     ---- 拿到明文编码后对应的字节

  decode(解码方式)     -----将编码后的字节解码成对应的明文

  注:用什么进行编码就要用什么进行解码 ,否则会出现乱码。

  补充:

    python3中程序运行阶段使用的是Unicode,可以显示所有内容。pycharm存储的时候默认使用utf-8类型。

    数据传输和存储都是使用bytes类型。

  编码知识:
         ascii 码:
               不支持  中文
               支持    英文  数字  符号
               8位      一个字节
         gbk码  国标:
               支持  中文,英文,数字,符号
               英文  16位   二个字节
               中文  16位   二个字节
         unicode  万国码
                支持  中文,英文,数字,符号
                英文  32 位  四个字节
                中文  32位   四个字节
         utf-8   长度可变的万国码 最少用8位
                英文   8位    一个字节
                中文   24位   三个字节

  

猜你喜欢

转载自www.cnblogs.com/xiaolu-fan/p/11150853.html
今日推荐