微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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位   三个字节

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐