目录
(3) items() 获取字典中的所有的key和values对
(2)元组的元素是不能添加的,但是元素总若有列表,这可以像列表里面添加元素
一、字典
(1)字典的定义
字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。
列表中我们通过“下标数字”找到对应的对象。而字典中通过“键对象”找到对应的“值对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。
“值”可以是任意的数据,并且可重复。
一个典型的字典的定义方式:
a = {'name':'xiaoli','age':18,'job':'student'}
(2)字典的特点
- 元素是无序的
- key的值是不变的
- 字典是可以动态伸缩
- 浪费大内存,典型的空间换时间
(3)字典的创建
第一种方法:直接写
scores = {"张三":25,"李四":65,"王五":984}
print(scores)结果为:{"张三":25,"李四":65,"王五":984}
第二种方法:使用内置函数dict()
scores = {"张三":25,"李四":65,"王五":984,}
scores=dict(name="马六",age=25)
print(scores)
结果为:{"张三":25,"李四":65,"王五":984,"马六":25}
(4)获取输出
第一种方法:
scores = {"张三":25,"李四":65,"王五":984,}
print(scores"张三"])
结果为:25
第二种方法:使用get( )方法
scores = {"张三":25,"李四":65,"王五":984,}
print(scores.get("张三"))
结果为:25
这里还有俩点要注意的:
(1)用第一种方法的时候,如果输入的健不存在key,那么就抛出keyerror的异常
(2)用get()方法取值的时候若字典不存在指定的key的时候,这返回None
(5)key的判断
(1)in 的使用
scores = {"张三":25,"李四":65,"王五":984,}
print("张三" in scores)
结果是:ture
(2 )not in 的使用
scores = {"张三":25,"李四":65,"王五":984,}
print("张三" not in scores)
结果是:false
(6)字典的删除
这儿用到的是del()大家想必很熟悉的吧
scores = {"张三":25,"李四":65,"王五":984}
del.scores["张三"]
print(scores)
结果为: {"李四":65,"王五":984}
(7)字典的新增
scores = {"李四":65,"王五":984}
scores["张三"]=90
print(scores)
结果为{"张三":90,"李四":65,"王五":984}
(8) 清空
scores = {"李四":65,"王五":984}
scores.clear()
print(scores)
结果为:{}
(9) 字典视图的三个方法
(3)key() 获取字典里面所有的key
scores = {"张三":25,"李四":65,"王五":984}
keys=scores.keys()
print(keys)
print(list(keys)) #可以把得到的这个keys转化成列表
结果如下:
(2) Values() 获取字典中的所有Values
scores = {"张三":25,"李四":65,"王五":984}
values=scores.values()
print(values)
print(list(values)) #可以把得到的这个values转化成列表
结果如下:
(3) items() 获取字典中的所有的key和values对
scores = {"张三":25,"李四":65,"王五":984}
items=scores.items()
print(items)
print(list(items))
结果如下:
(4)字典的历遍
scores = {"张三":25,"李四":65,"王五":984}
for item in scores
print(item)
结果为下:
(10) 内置函数zip()
items=["Fruits","Books","Others"] prices=[85,15,26] i={item.upper():price for item,price in zip(items,prices)} print(i)
结果为:
当items和prices俩个列表的元素不相等时,按元素少的那一个进行打包。
(10) 字典的基本原理(初学者可以忽略)
a={} |
a["name"]="xiaoli" |
假设字典a对象创建完后,数组长度为8:
我们要把”name”=”xiaoli”这个键值对放到字典对象a中,首先第一步需要计算键”name”的散列值。Python中可以通过hash()
这个样子的: |
bin(hash("name")) |
'-0b1010111101001110110101100100101' |
由于数组长度为8,我们可以拿计算出的散列值的最右边3位数字作为偏移量,即“101”,十进制是数字5。
我们查看偏移量5,对应的bucket是否为空。
如果为空,则将键值对放进去。
如果不为空,则依次取右边3位作为偏移量,即“100”,十进制是数字4。
再查看偏移量为4的bucket是否为空。直到找到为空的bucket将键值对放进去。
流程图如下:
扩容
python会根据散列表的拥挤程度扩容。“扩容”指的是:创造更大的数组,将原有内容拷贝到新数组中。
接近2/3时,数组就会扩容。
二、元组
元组属于不可变序列,不能修改元组中的元素。
因此,元组没有增加元素、修改元素、删除元素相关的方法。
所以我们只需要学习元组的创建和删除,元组中元素的访问和计数即可。
元组支持如下操作:
- 索引访问
- 切片操作
- 连接操作
- 成员关系操作
- 比较运算操作
- 计数:元组长度len()、最大值max()、最小值min()、求和sum()等。
(1)元组的创建
俩种方法:(1)第一种通过()创建
通过()创建元组。小括号可以省略。
a = (10,20,30) 或者 a = 10,20,30
如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1)解释为整数1,(1,)解释为元组。
a = (1)
print(type(a))
结果为:<class 'int'>
a = (1,) #或者 a = 1,
print(type(a))
结果为:<class 'tuple'>
(2)通过tuple()创建元组
tuple(可迭代的对象)
例如:
b = tuple() #创建一个空元组对象
b = tuple("abc")b = tuple(range(3))
b = tuple([2,3,4])
(3)创建空元组
t3=() t4=tuple() print(type(t3)) print(type(t4))
结果:
总结一下:
tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。
list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。
(2)元组的元素访问
元组的元素访问和列表一样,只不过返回的仍然是元组对象。
a = (20,10,30,9,8)
print(a[1])
结果为:10
print( a[1:3])
结果为:(10, 30)
print( a[:4])
结果为:(20, 10, 30, 9)
(2)元组的元素是不能添加的,但是元素总若有列表,这可以像列表里面添加元素
t=("python",10,100,[10.20])
t[1]=100 #这个是报错的,因为元组不能乡里添加元素
但是像这样
t[3].append(200)
print(t)
结果为:("python",10,100,[10.20,100])
三、集合
(1)主要的特点:
- 内置函数结构
- 与列表,字典是一样的是可变序列
- 无value的字典
(2)集合的表示方法
表示有俩种表示的方式。
(1)第一种直接定义
s={"python","hello","i","love","you",95 }
(2) 第二种使用内置函数set()定义
set={"python","hello","i","love","you",95} print(set)将列表住转为集合
a = ['a','b','c','b']
b = set(a)
print(b)
{'a','b','c','b'}
结果为:
(3)集合的相关操作
(1)集合元素的判断
# in not in的使用
s={"python","hello","i","love","you",95 }
print(95 in s) #ture
print(95 not in s ) # false
(2)集合元素的增加
(1)add() 一次增加一个元素
s={"python","hello","i","love","you",95 }
s.add(800)
print(s)
{"python","hello","i","love","you",95,800 }
(2)update() 至少增加一个元素
s={"python","hello","i","love","you",95 }
s.update({80,800,80000,8000000})
print(s)
{"python","hello","i","love","you",95 ,80,800,80000,8000000}
(3)集合元素的删除
(1)remove() 一次删除一个指定的元素
s={"python","hello","i","love","you",95 }
s.remove(95)
print(s)
{"python","hello","i","love","you" }
(2)pop() 一次随机删除一个元素
s={"python","hello","i","love","you",95 }
s.pop()
print(s)
{"python","i","love","you" ,95} #注意是随机删除
(3)清空集合
s={"python","hello","i","love","you",95 }
s.clear()
print(s)
{}
(4)并集、交集、差集等运算。
我们给出示例:
a = {1,3,'sxt'}
b = {'he','it','sxt'}
a|b #并集
{1, 3, 'sxt', 'he', 'it'}
a&b #交集
{'sxt'}
a-b #差集
{1, 3}
a.union(b) #并集
{1, 3, 'sxt', 'he', 'it'}
a.intersection(b) #交集
{'sxt'}
a.difference(b) #差集
{1, 3}
原创不易,读者大大点点赞!!!!