python初识三

Posted 幸福的小耗子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python初识三相关的知识,希望对你有一定的参考价值。

字典

  ps:数据类型分类:1、不可变数据类型:元组、bool、int、str、(也被称为可哈希)

           2、可变数据类型:list、dict(不可哈希)

  字典的Key必须为不可变数据类型,但字典的值value可以为任意数据类型

  dict 的优点:可以使用二分查找查询、可以存储大量的关系型数据

  特点:在python3.5之前的版本,字典是无序的

字典的增

dic = {name:haohao}
dic[age] = 22  # 若无键值对,则增加键值对
print(dic)
dic[name] = huahua  # 若有键值对,则值覆盖
print(dic)
dic = {name: HaoHao}
dic.setdefault(age, 22)  # 若无键值对,则增加键值对
print(dic)
dic.setdefault(name, HuaHua)  # 若有键值对,则不执行操作
print(dic)

字典的删

dic = {name: HaoHao, age: 22, hobby: IT}
s = dic.pop(name, None)  # 若键值存在,则删除键,返回值;若不存在返回None(可自定义)
print(s)
dic = {name: HaoHao, age: 22, hobby: IT}
k,v = dic.popitem()  # 随机删除键值对,返回删掉的键值对
print(k,v)
dic = {name: HaoHao, age: 22, hobby: IT}
dic.clear()  # 清空字典
print(dic)
dic = {name: HaoHao, age: 22, hobby: IT}
del dic[name]  # 删除键‘name‘,没有则会报错
print(dic)
del dic  # 删除字典
print(dic)

字典的改

dic = {name: HaoHao, age: 22, hobby: IT}
dic[name] = HuaHua  # 直接对键值进行修改
print(dic)
dic = {name: HaoHao, age: 22, hobby: IT}
dic2 = {name: HuaHua}
dic2.update(dic)  # dic的键值对对dic2进行覆盖添加
print(dic2)

字典的查

dic = {name: HaoHao, age: 22, hobby: IT}
l1 = dic.keys()  # 字典的Key放入列表
l2 = dic.values()  # 字典的值放入列表
l3 = dic.items()  # 将字典的键值对构成一个小元组,放入列表
print(l1, 
, l2, 
, l3)
for k, v in l3:  # 通过循环查询输出键值对
    print(k,v)
s = dic.get(name1, None)  # 通过get获取键值信息,查到后返回对应值,若没有查到返回None(可自定义)
print(s)

字典的嵌套

dic = {sushe:{1:{name: HaoHao, age: 22, hobby: IT},
                2:{name: HuaHua, age: 20, hobby: IT},
                3:{name: AnShao, age: 22, hobby: IT}},
       school: ShiFan}
dic[sushe][4] = {name: QianGe, age: 23, hobby: IT}  # 添加新的建值对
dic[sushe][2][name] = dic[sushe][2][name].upper()  # 将字典中的某个字符串大写
print(dic)

小知识点总结

  1、python2与python3的区别

    python2中   print ‘abc‘ 可以加()也可以不加

          range()  xrange()

          raw_input()

    python3中   print (‘abc‘)必须加()

          range()

          input()

  2、=   ==    is     id

   = 赋值

   == 比较值是否相等

   is 比较内存地址

   id  内容地址

l1 = [1, 2, 3]
l2 = [1, 2, 3]
print(l1 is l2)
l3 = l1
print(l1 is l3)
print(id(l1), id(l2), id(l3))

  3、int     str

  注意:数字和字符串类型有小数据池(可以节省内存空间)

    数字的范围 -5~256

    字符串:1、不能有特殊字符;2、s*20还是同一个地址,但s*21以后就是不同地址了(python3.7第二点好像不适用)

i1 = 6
i2 = 6
print(i1 is i2, id(i1), id(i2))
s1 = abc
s2 = abc
print(s1 is s2, id(s1), id(s2))

  4、(1)多个编码规则之间的二进制是不能相互识别的,互相之间会产生乱码

     (2)文件的存储、传输的时候不能是unicode编码方式(可以是utf-8、utf-16、gbk、gb2312等)

     (3)python3的str 在内存中是用unicode编码的,在存储和传输时要转换成bytes类型(utf-8、gbk、gb2312)

  ps:编码类型的转换方式

    对于英文: str :表现形式:s = ‘alexi‘    编码方式为:01010101······(unicode),

         bytes: 表现形式:s = b‘alexi‘  编码方式为:010101010·······(utf-8、gbk、gb2312)

    对于中文: str :  表现形式: s = ‘中国‘   编码方式为: 0101011110······(unicode)

         bytes: 表现形式:s = b‘xe4xb8xadxe5x9bxbd‘  编码方式为:01010100·····(utf-8、gbk、gb2312)

  如何将str 转换为 bytes编码方式?encode()

s1 = 中国
s2 = s1.encode(utf-8)
print(s2)

基础数据类型补充

  list: 在循环列表时要注意不要删除列表中的内容,因为列表时可变数据类型,在删除列表中内容后会影响循环

  dict:补充一种字典的建立方式

dic = dict.fromkeys([1, 2, 3], [])  # 迭代添加Key,添加同样的值
print(dic)
dic[1].extend(泰格)
dic[2].append(二哥)
print(dic)
# 要注意的是,这样建的字典和直接定义的字典的不同之处,这种字典中修改一个键值,所有的都会改变,要注意与下面方式的区别
dic = {1: [], 2: [], 3: []}
print(dic)
dic[1].extend(泰格)
dic[2].append(二哥)
print(dic)

    同样,字典也属于可变数据类型,因此与列表一样,在循环字典时不能删除字典的键值对,当想删除字典的键值对时,应

  先将想要删除的键写入一个列表中,然后在通过循环列表删除字典中的键值对。

dic = {1: [], 2: [], 3: [], 4: []}
li = []
for i in dic:
    if i%2 == 0:  # 删除字典中的偶数键值对
        li.append(i)
for i in li:
    del dic[i]
print(dic)

  ps:小知识 0 ‘‘  []  {}  set() 转化为 bool 时为False

 

以上是关于python初识三的主要内容,如果未能解决你的问题,请参考以下文章

01 python安装与初识

验证码逆向专栏极验三代四代点选类验证码逆向分析

C++项目三代码参考(改进版)

初识python

python初识

初识python-条件判断