我是靠谱客的博主 迷人外套,这篇文章主要介绍python学习笔记四(字典&集合)字典集合 set,现在分享给大家,希望可以做个参考。

本篇文章主要记录python中量大容器字典和集合,不要说什么列表、元组这俩是序列,虽然都是用来存储数据的但是其本质是不同。但是在python中序列和容器的使用感受差别实在是太小了,主要是看存储的数据的特征选取合适的数据类型就可以了

字典

  • 定义

    复制代码
    1
    2
    3
    4
    5
    6
    表现形式:{'key1':value1,'key2':value2} 字典是一种可变的容器, 字典中的数据采用key-value对进行映射存储(和map有点像) 字典数据没有顺序 字典中的数据的索引都是通过键值,因此字典的键完全不能重复,而且只能用不可变类型作为字典的键
  • 赋值

    python是一种很灵活的语言因此字典的创建方式也很多,其实只要你在赋值的赋值变量符合字典的表现形式,注意将键值设置为不可变类型,你想怎么赋值就怎么赋值。下面总结了能够见到的创建和赋值方法

    复制代码
    1
    2
    3
    4
    5
    首先让我们从最low的来看吧: 创建空字典&非空字典 d = {} d = {'name':'小明','age':20,'addr':'中国'}

    通过构造函数创建&赋值
    字典的构造函数(dict())

    复制代码
    1
    2
    3
    4
    d = dict() 创建空字典,等同于{} d = dict(iterable) 用可迭代对象初始化一个字典 d = (**kwargs) 关键字传参生成字典
    复制代码
    1
    2
    3
    d = dict() d = dict([('name','小明'),('age',15)]) d = dict(name = '小明',age = 15)
  • 基本操作
    对于字典操作可以分为两个部分:基本运算符操作,字典内置函数操作

    添加/修改元素:

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dict[key] = value d['name'] = '小明明' 注:如果改变的键值存在,那么直接修改该键值对应的值,如果键值不存在,那么创建新的的键值并赋值 对于嵌套类型的字典那么对应的value值是什么类型的数据结构就采用其对应的添加修改方式 L = ['tom','marry','pat'] age = [20,30,40] d['age'] = age d['name'] =L d['name'].append('jerry')

    这里写图片描述

删除操作

复制代码
1
2
3
4
5
6
del dict[key] 根据键值删除字典元素,不返回任何值,直接改变原字典 del dict 直接删除一个字典 dict.clear()清空字典,直接改变原字典 dict.pop(key,defult) 根据键值删除字典元素,如果删除的键值在字典中存在那么返回该value,如果键值不存在那么返回defult值,直接改变原字典 dict.popitem() 随机删除key-value对,返回的是key-value元组,直接改变原字典
复制代码
1
2
3
4
5
6
7
8
d = dict(name = '小明',age = 20,addr = '中国') #按照关键字传参创建字典 del d['name'] test = d.pop('age',0) test = d.pop('age',0) test = d.popitem() d.clear() del d

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

访问字典元素

dict.values() 以列表形式返回字典中所有值
dict.keys() 以列表形式放回字典中的所有键
dict.items()返回可迭代对象其中包含key-value

复制代码
1
2
3
4
5
d = dict(name = '小明',age = 20,addr = '中国') t = d.values() print(t) type(t)

这里写图片描述

复制代码
1
2
3
k = d.keys() print(k) type(k)

这里写图片描述

复制代码
1
2
3
itme = d.items() print(itme) type(item)

这里写图片描述

复制代码
1
2
3
dic.get(key,default) 返回指定键值的值,如果不存在那么返回默认值 d.get('name','不详') d.get('性别','不详')

这里写图片描述

  • 字典推导式
    用可迭代对象一次生成字典的表达式,emmm事实证明能少写代码就少写代码

    复制代码
    1
    2
    {键表达式:值表达式 for 变量 in 可迭代对象[if 真值表达式]}
    复制代码
    1
    2
    生成一个字典,键为[1,9]的整数,值为键的平方 d = {x:x**2+1 for x in range(10) if x%2 == 0}

    这里写图片描述

集合 set

作为学习了十几年数学的同学们看python集合的定义,就有一种学完降龙十八掌又回去扎马步一样,so easy好吗!!但是作为勤奋爱总结的博主,还是整理了集合的相关操作

  • 定义

    复制代码
    1
    2
    3
    4
    5
    集合是一种可变的容器,集合内的数据对象都是唯一的(熟悉吗?这不就是集合的唯一性!!!) 集合与字典相同都是无序的存储结构 集合中的元素必须是不可变的对象 集合相当于只有key没有value的字典
  • 创建方式

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    字面值创建: set() s = {1,2,3} 构造函数创建: set():用于创建一个空的集合对象 set(iterable):用可迭代对象创建一个新的集合, 注意这迭代对象一定要是不可变的,那么list、set、dict这种就完全不行了
    复制代码
    1
    2
    3
    4
    5
    6
    s = set() s = {1,2,3,4} s = set("ABC") s = set("ABCCBA") #s = {A,B,C} s = set({1:"一",2:"二",5:"五",}) s = ([1,2,3,2]) #自动做了去重处理(^o^)/~

    这里写图片描述
    注意set经常会用来给其他序列去重,简洁、方便、易操作

  • 基本操作
    python中常见序列的的+、-、*、/等操作在set中一般用集合操作来替代

操作说明
交集&生成两个集合的交集 s1 = {1,2,3} s2 = {2,3,4} s3 = s1&s2 = {2,3}
并集生成两个集合的并集 s1 = {1,2,3} s2 = {2,3,4} s3 = {1,2,3,4}
补集-s1 = {1,2,3} s2 = {2,3,4} s3 = s1-s2 = {1}属于s1且不属于s2的集合
对称补集^s1 = {1,2,3} s2 = {2,3,4} s3 = s1^s2 = {1,4}
子集<__超集>返回都为布尔类型
==/!=判断两个集合是否相等
in/not in判断元素是否在集合中

集合中类的方法

方法意义
s.add(e)在集合中添加一个新的元素e;如果元素已经存在,则不添加
s.remove(e)从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
s.discard(e)从集合S中移除一个元素e,在元素e不存在时什么都不做;
s.clear()清空集合内的所有元素
s.copy()将集合进行一次浅拷贝
s.pop()从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常,返回为删除的元素
s.update(s2)用 S与s2得到的全集更新变量S
  • 集合推导式
    集合推导式是用可迭代对象生成集合的表达式,一般用来去除重复元素

    复制代码
    1
    2
    3
    L = [1,3,5,7,2,4,6,8,1,4,7,9] s = set(L) #采用一般方法去重 s = {x for x in L} #采用集合推导式去重

    这里写图片描述
    这里写图片描述
    关于集合的小补充:
    相对于普通的集合还有一种特殊的集合frozenset(),称为固定集合,固定集合的操作与普通集合一样,只不过固定集合是不可变的。

最后

以上就是迷人外套最近收集整理的关于python学习笔记四(字典&集合)字典集合 set的全部内容,更多相关python学习笔记四(字典&集合)字典集合内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部