19-Python常用数据类型操作3

摘要:1.字典概念 无序的, 可变的键值对集合定义 方式1 {key: value, key: value...} 例如 {"name": "sz", "age": 18} 方式2 fromkeys(S, v=None)

1.字典

概念    无序的, 可变的键值对集合定义    方式1        {key: value, key: value...}        例如            {"name": "sz", "age": 18}    方式2        fromkeys(S, v=None)            静态方法                类和对象都可以调用            类调用                dict.fromkeys("abc", 666)                    {'a': 666, 'c': 666, 'b': 666}                此处的dict, 是指字典类型            对象调用                dic.fromkeys("abc", 666)                    {'a': 666, 'c': 666, 'b': 666}                此处的dic, 是实例化的字典对象    注意        key不能重复            假如重复            后值会把前值覆盖        key必需是任意不可变类型            例如                可变                    列表                    字典                    可变集合                    ...                不可变                    数值                    布尔                    字符串                    元组                    ...        起因            Python的字典, 采用哈希(hash)的方式实现            简单存储过程                初始化一个表格, 用来存放所有的值                    这个表格称之为"哈希表"                    暂且可了解为我们所学的 "列表"                在存储一个键值对的时候, 会作如下操作                    根据给定的key, 通过某些操作, 得到一个在"哈希表"中的索引位置                        把key通过 "哈希函数" 转换成一个整型数字                            称为 "哈希值"                        将该数字对数组长度进行取余,取余结果就当作数组的下标                        假如产生了"哈希冲突"                            比方, 两个不同的key, 计算出来的索引, 是同一个                            则采用"开发寻址法"                                通过探测函数查找下一个空位                    根据索引位置, 存储给定的"值"            简单查找过程                再次使用哈希函数将key转换为对应的列表的索引,并定位到列表的位置获取value存在意义    可以通过key, 访问对应的值, 使得这种访问更具意义        person["name"]        表述的是获取一个人的姓名    查询效率得到很大提升        可想象"汉字字典"的使用方式            直接根据指定的key找到对应的页码, 从而找到这个汉字            不需要一页一页的翻着找常用操作    增        dic[key] = value            当key在原字典中不存在时, 即为新添加操作    删        del  dic[key]            key, 必需要存在        dic.pop(key[, default])            删除指定的键值对, 并返回对应的值            假如key, 不存在, 那么直接返回给定的default值; 不作删除动作            假如没有给定默认值, 则报错                        dic.popitem()            删除按升序排序后的第一个键值对, 并以元组的形式返回该键值对            假如字典为空, 则报错                        dic.clear()            删除字典内所有键值对                返回None            注意, 字典对象本身还存在, 只不过内容被清空                注意和del的区别    改        只能改值, 不能改key        修改单个键值对            dic[key] = value                直接设置, 假如key不存在, 则新添加, 存在则修改        批量修改键值对            oldDic.update(newDic)                根据新的字典, 批量升级旧字典中的键值对                假如旧字典没有对应的key, 则新添加键值对    查        获取单个值            方式1                dic[key]                    假如key, 不存在, 会报错                                    方式2                dic.get(key[, default])                    假如不存在对应的key, 则取给定的默认值default                    假如没有默认值,  则为None                        但不会报错                    但是, 原字典不会新添加这个键值对            方式3                dic.setdefault(key[,default])                    获取指定key对应的值                    假如key不存在, 则设置给定默认值, 并返回该值                    假如默认值没给定                        则使用None代替        获取所有的值            dic.values()        获取所有的键            dic.keys()        获取字典的键值对            dic.items()        遍历            for in            for x,y in info.items()        注意            Python2.x和Python3.x版本之间关于获取键, 获取值, 获取item, 之间的区别                Python2.x 直接是一个列表                    可通过下标进行获取指定元素                Python3.x 中是Dictionary view objects                    优势                        当字典发生改变时, view objects会跟着发生改变                    转换成列表使用                        list(result)                    转换成迭代器                        iter(result)                    也可以直接被遍历            在Python2.x中提供了如下方法                viewkeys()                viewvalues()                viewitems()                作用好像Python3.x中的                    Dictionary view objects    计算        len(info)            键值对的个数    判定        x in dic            判定dic中的key, 能否存在x        x not in dic            判定dic中的key, 能否不存在x        dic.has_key(key)            已过期, 建议使用in来代替

2.集合

    概念        无序的, 不可随机访问的, 不可重复的元素集合        与数学中集合的概念相似,可对其进行交、并、差、补等逻辑运算        分为可变集合和非可变集合            set                为可变集合                    增                    删                    改            frozenset                不可变集合                    创立好之后, 无法增删改    定义        可变集合set            s = {1,2,3,4}            s = set(iterable)                其中iterable可以是字符串、列表、元组、字典等                但是为dict时,只会获取提Key作为set的元素            集合推导式                 s = set(x**2 for x in range(1, 10) if x % 2 == 0)                s = {推导式}        不可变集合frozenset            fs = frozenset(iterable)                其中iterable可以是字符串、列表、元组、字典等                但是为dict时,只会获取提Key作为set的元素            集合推导式                 s = frozenset(x**2 for x in range(1, 10) if x % 2 == 0)        注意            1. 创立一个空集合时, 需要使用set() 或者者 frozenset(), 不能使用 s = {}                会被识别成为字典            2. 集合中的元素, 必需是可哈希的值                假如一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)的            暂时了解为 不可变类型            3. 假如集合中的元素值出现重复, 则会被合并为1个    常用操作        单一集合操作            可变集合                增                    s.add(element)                    注意:                        必需保证增加的元素是可哈希的值                删                    s.remove(element)                        指定删除set对象中的一个元素                        假如集合中没有这个元素,则返回一个错误                    s.discard(element)                        指定删除集合中的一个元素                        若没有这个元素,则do nothing                    s.pop(element)                        随机删除并返回一个集合中的元素                        若集合为空,则返回一个错误                    s.clear()                        清空一个集合中的所有元素                改                    元素为不可变类型, 不能修改                查                    无法通过索引或者key进行查询                    1. 通过 for in 进行遍历                    2. 通过迭代器进行访问            不可变集合                不能增删改                查                    1. 通过 for in 进行遍历                    2. 通过迭代器进行访问        集合之间操作            交集                intersection(Iterable)                    字符串                        只判定字符串中的非数字                    列表                    元组                    字典                        值判定key                    集合                    ...                逻辑与 '&'                intersection_update(…)                    交集计算完毕后, 会再次赋值给原对象                        会更改原对象                        所以, 只适用于可变集合            并集                union()                    返回并集                逻辑或者 '|'                    返回并集                update()                    升级并集            差集                difference()                算术运算符减 ‘-‘                difference_update()            判定                isdisjoint()两个集合不相交                issuperset()一个集合包含另一个集合                issubset()一个集合包含于另一个集合        注意            可变与不可变集合混合运算, 返回结果类型以运算符左侧为主

学习地址:

撩课-Python大数据+人工智能1
撩课-Python大数据+人工智能2
撩课-Python大数据+人工智能3
撩课-Python大数据+人工智能4
撩课-Python大数据+人工智能5
撩课-Python大数据+人工智能6
撩课-Python-GUI编程-PyQt5

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|软件环境】梦幻仙域游戏攻略(2023-12-19 10:02)
【系统环境|软件环境】梦幻仙域游戏攻略(2023-12-19 10:02)
【系统环境|】卡帕部落揭秘潮玩新宠,探究玩法(2023-12-14 09:45)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】如何开发搭建卡帕部落模式源码(2023-12-12 10:44)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
手机二维码手机访问领取大礼包
返回顶部