概述
本篇文章主要记录python中量大容器字典和集合,不要说什么列表、元组这俩是序列,虽然都是用来存储数据的但是其本质是不同。但是在python中序列和容器的使用感受差别实在是太小了,主要是看存储的数据的特征选取合适的数据类型就可以了
字典
定义
表现形式:{'key1':value1,'key2':value2} 字典是一种可变的容器, 字典中的数据采用key-value对进行映射存储(和map有点像) 字典数据没有顺序 字典中的数据的索引都是通过键值,因此字典的键完全不能重复,而且只能用不可变类型作为字典的键
赋值
python是一种很灵活的语言因此字典的创建方式也很多,其实只要你在赋值的赋值变量符合字典的表现形式,注意将键值设置为不可变类型,你想怎么赋值就怎么赋值。下面总结了能够见到的创建和赋值方法
首先让我们从最low的来看吧: 创建空字典&非空字典 d = {} d = {'name':'小明','age':20,'addr':'中国'}
通过构造函数创建&赋值
字典的构造函数(dict())d = dict() 创建空字典,等同于{} d = dict(iterable) 用可迭代对象初始化一个字典 d = (**kwargs) 关键字传参生成字典
d = dict() d = dict([('name','小明'),('age',15)]) d = dict(name = '小明',age = 15)
基本操作
对于字典操作可以分为两个部分:基本运算符操作,字典内置函数操作添加/修改元素:
dict[key] = value d['name'] = '小明明' 注:如果改变的键值存在,那么直接修改该键值对应的值,如果键值不存在,那么创建新的的键值并赋值 对于嵌套类型的字典那么对应的value值是什么类型的数据结构就采用其对应的添加修改方式 L = ['tom','marry','pat'] age = [20,30,40] d['age'] = age d['name'] =L d['name'].append('jerry')
删除操作
del dict[key] 根据键值删除字典元素,不返回任何值,直接改变原字典
del dict 直接删除一个字典
dict.clear()清空字典,直接改变原字典
dict.pop(key,defult) 根据键值删除字典元素,如果删除的键值在字典中存在那么返回该value,如果键值不存在那么返回defult值,直接改变原字典
dict.popitem() 随机删除key-value对,返回的是key-value元组,直接改变原字典
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
d = dict(name = '小明',age = 20,addr = '中国')
t = d.values()
print(t)
type(t)
k = d.keys()
print(k)
type(k)
itme = d.items()
print(itme)
type(item)
dic.get(key,default)
返回指定键值的值,如果不存在那么返回默认值
d.get('name','不详')
d.get('性别','不详')
字典推导式
用可迭代对象一次生成字典的表达式,emmm事实证明能少写代码就少写代码{键表达式:值表达式 for 变量 in 可迭代对象[if 真值表达式]}
生成一个字典,键为[1,9]的整数,值为键的平方 d = {x:x**2+1 for x in range(10) if x%2 == 0}
集合 set
作为学习了十几年数学的同学们看python集合的定义,就有一种学完降龙十八掌又回去扎马步一样,so easy好吗!!但是作为勤奋爱总结的博主,还是整理了集合的相关操作
定义
集合是一种可变的容器,集合内的数据对象都是唯一的(熟悉吗?这不就是集合的唯一性!!!) 集合与字典相同都是无序的存储结构 集合中的元素必须是不可变的对象 集合相当于只有key没有value的字典
创建方式
字面值创建: set() s = {1,2,3} 构造函数创建: set():用于创建一个空的集合对象 set(iterable):用可迭代对象创建一个新的集合, 注意这迭代对象一定要是不可变的,那么list、set、dict这种就完全不行了
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 |
集合推导式
集合推导式是用可迭代对象生成集合的表达式,一般用来去除重复元素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学习笔记四(字典&集合)字典集合 set所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复