目录
1.Python字典(dict )
字典是一种可变容器模型,且可存储任意类型对象。
字典的每个键值对( key:value )用冒号分割,每个对之间用逗号分割,整个字典包括在花括号 {} 中
d = {key1 : value1, key2 : value2, key3 : value3 }
1.1创建字典
dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
键必须是唯一的,但值可不唯一。即一个字典中键不可重复,值可以。(若有相同键名,则在字典中后面的键覆盖前面的键)
d3 = {"name":"karen","name":23}
print(d3)#{'name': 23}
d1 = {True:"Alice","age":20,65:"A",1:"10"}
print(d1)#{True: '10', 'age': 20, 65: 'A'}
d1 = {"age":20,65:"A",1:"10",True:"Alice"}
print(d1)#{'age': 20, 65: 'A', 1: 'Alice'}
值可以取任何数据类型,但键必须是不可变的数据类型,如字符串,数字。
d1 = {}#创建空字典
d2 = dict()#使用内建函数 dict()创建字典
d3 = {"name":"karen","age":23}
d4 = dict({"name":"jack","age":24})
print(d3)# 打印字典
print(len(d3))# 查看字典的数量
print(type(d3))# 查看类型
1.2访问字典里的值
访问存在的键值对
字典的键无论是不是有顺序的数字,都无法切片,只能通过键访问
d3 = {"name":"karen","age":23,65:"A"}
print(d3["name"])#输出:karen
print(d3[65])#输出:A
访问不存在的键值对
d3 = {"name":"karen","age":23,65:"A"}
print(d3[97])#报错:KeyError: 97
1.3修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
d1 = {"name":"Alice","age":20,65:"A"}
d1[97]="a"
print(d1[97])#a
d1 = {"name":"Alice","age":20,65:"A"}
#删除字典元素
del d1["name"]
print(d1)
d1 = {"name":"Alice","age":20,65:"A"}
#删除字典
del d1
print(d1)#报错:name 'd1' is not defined
1.6字典常用API
1.6.1操作字典的函数
- len(dict)
计算字典元素个数,即键的总数。
d1 = {"name":"Alice","age":20,65:"A"}
print(len(d1))
- str(dict)
输出字典,可以打印的字符串表示。
多用于网络数据传输,即JSON格式的文件
d1 = {"name":"Alice","age":20,65:"A"}
str1=str(d1)
print(str1)#{'name': 'Alice', 'age': 20, 65: 'A'}
print(type(str1))#<class 'str'>
- type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
d1 = {"name":"Alice","age":20,65:"A"}
str1=str(d1)
print(str1)#{'name': 'Alice', 'age': 20, 65: 'A'}
print(type(str1))#<class 'str'>
1.6.2字典的方法
- dict.clear()
删除字典内所有元素
d1 = {"name":"Alice","age":20,65:"A"}
d1.clear()
print(d1)
- dict.copy()
返回一个字典的浅复制
如果值是可变对象,修改新字典中的这些值会影响原始字典中的对应值。
d1 = {1:['a','b'],"age":20,3:{"65":"A"}}
d2=d1.copy()
#修改字典中值为list类型的数据
d2[1][0]='AB'#注意:[1][0]中[1]为字典的键,[0]为list索引
print(d1,d2)
d1 = {1:['a','b'],"age":20,3:{"65":"A"}}
d2=d1.copy()
#修改字典中值为set类型的数据
d2[3]["65"]='AB'#注意:[3]["65"]为不同字典的键
print(d1,d2)
- dict.fromkeys(seq)
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
list1=[88,99]
tup1=(1,2,3)
dict1={97:'a',48:'0'}
set1={"A","B"}
#迭代容器
iterate1=range(5)
dict2=dict()
print(dict2.fromkeys(list1))#{88: None, 99: None}
print(dict2.fromkeys(dict1))#{97: None, 48: None}
print(dict2.fromkeys(set1))#{'B': None, 'A': None}
print(dict2.fromkeys(tup1))#{1: None, 2: None, 3: None}
print(dict2.fromkeys(iterate1))#{0: None, 1: None, 2: None, 3: None, 4: None}
- dict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值
d1 = {"name":"Alice","age":20,65:"A"}
#取存在的值
name1=d1.get("name")
print(name1)#Alice
#取不存在的值
name1=d1.get("gender")
print(name1)#None
#取不存在的值,设置返回值
name1=d1.get("gender",404)
print(name1)#404
- key in dict
如果键在字典dict里返回true,否则返回false
d1 = { 48: "0",49:"1",65: "A",97:"a"}
print("0" in d1)#False,无法查找值是否在字典中
print(48 in d1)#True
- dict.keys()
返回一个视图对象,是原字典的键
d1 = {"name": "Alice", "age": 20, 65: "A"}
for i in d1.keys():
print(i)
- dict.values()
返回一个视图对象,是原字典的值
d1 = {"name": "Alice", "age": 20, 65: "A"}
for i in d1.values():
print(i)
- dict.items()
以列表返回一个视图对象,是元组
d1 = {"name": "Alice", "age": 20, 65: "A"}
for i in d1.items():
print(i)
print(type(i))
d1 = { 48: "0",49:"1",65: "A",97:"a"}
print( d1.items())
for k,v in d1.items():
print(k,v)
- dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
d1 = dict()
for item in range(5):
d1.setdefault(item,"value")
print(d1)#{0: 'value', 1: 'value', 2: 'value', 3: 'value', 4: 'value'}
- dict.update(dict2)
把字典dict2的键/值对更新到dict里,若有重复键会覆盖
d1 = {"name": "Alice", "age": 20, 65: "A"}
d2 = {"gender": "girl","age": 18,}
d1.update(d2)
print(d1)
print(d2)
- pop(key,default)
删除字典 key(键)所对应的值,返回被删除的值。
d1 = {"name": "Alice", "age": 20, 65: "A"}
print(d1.pop("name"))#Alice
print(d1.pop("gender"))#删除不存在的键,会报错
- popitem()
返回并删除字典中的最后一对键和值。
d1 = {"name": "Alice", "age": 20, 65: "A"}
print(d1.popitem())
print(d1)#{'name': 'Alice', 'age': 20}
2.Python集合(set)
集合(set)是一个无序的不重复元素序列。
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
2.1创建集合
可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合只能存储Number,字符串,元组。
parame = {value01,value02,...}
set(value)
set1 = {1, 2, 3, 4}# 直接使用大括号创建集合
set4={1,2,3,'a','b','c',(4,5,6)}
set2 = set([4, 5, 6, 7])# 使用 set()函数从列表创建集合
set3 = set((4, 5, 6, 7))# 使用 set()函数从元组创建集合
2.2添加元素
- s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
无返回
set1={1,2,3}
set1.add(1)
print(set1)#{1, 2, 3}
set1.add('a')
print(set1)#{1, 2, 3, 'a'}
- s.update( x )
添加元素到集合,且参数可以是列表,元组,字典等 ,x 可以有多个,用逗号隔开
set1={1,2,3}
list1=[88,99]
tup1=('a','b')
dict1={97:'a',48:"0"}
set1.update(list1)
print(set1)
set1.update(tup1)
print(set1)
#集合存储字典,是将key取出存储
set1.update(dict1)
print(set1)
#多个参数
set2=set()
set2.update(list1,tup1,dict1)
print(set2)
#添加列表中的元组元素
set1=set()
set1.update([(1,2),("a","b")])
print(set1)
#不能添加:元组中的列表元素
#集合存储的元素都是不可变的,所以集合中的元素不可能有list
set1=set()
set1.update(([1,2],["a","b"]))#会报错
print(set1)
2.3移除元素
- s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
移除指定元素,无返回
set1={1,2,3,4,5,6}
set1.remove(1)
print(set1)#{2, 3, 4, 5, 6}
set1.remove(10)#报错
- s.discard( x )
将元素 x 从集合 s 中移除,如果元素不存在,不会发生错误。
删除指定元素,无返回
set1={1,2,3,4,5,6}
set1.discard(2)
print(set1)#{1, 3, 4, 5, 6}
#移除集合中不存在的元素,集合无变化
set1.discard(100)
print(set1)
- s.pop()
对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
随机移除元素,无返回
set1=set({'a','b','c','d'})
print(set1)
set1.pop()
print(set1)
2.4计算集合元素个数
- len()
计算集合元素个数
set1={1,2,3,4,5,6}
print(len(set1))#6
2.5清空集合
- s.clear()
清空集合
set1={1,2,3,4,5,6}
set1.clear()
print(set1)#set()
2.6判断元素是否存在集合中
x in s 判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
set1={1,2,3,4,5,6}
print(1 in set1)#True
print(10 in set1)#False
2.7集合其他内置方法
- copy()
深拷贝一个集合
d1 = {"name": "Alice", "age": 20, 65: "A"}
d2 = d1.copy()
d2["name"] = "Beta"
print(d1)
- difference()
返回多个集合的差集
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={3}
print(set1.difference(set2))#{1, 2, 3}
print(set1.difference(set2,set3))#{1, 2}
- difference_update()
从调用它的集合中移除所有在指定集合中出现的元素,即只保留那些仅存在于调用它的集合中的元素。
直接修改调用它的集合,没有返回值。
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={3}
set1.difference_update(set2)
print(set1)#{1, 2, 3}
#多参数
set1.difference_update(set2,set3)
print(set1)#{1, 2}
- intersection()
返回集合的交集
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={4}
#求两个集合的交集
print(set1.intersection(set2))#{4, 5, 6}
#求多个集合的交集
print(set1.intersection(set2,set3))#{4}
- intersection_update()
求集合的交集。
无返回
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={4}
#求两个集合的交集
set1.intersection_update(set2)
print(set1)#{4, 5, 6}
#求多个集合的交集
set1.intersection_update(set2,set3)
print(set1)#{4}
- isdisjoint()
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={'a','b','c'}
print(set1.isdisjoint(set2))#False
print(set1.isdisjoint(set3))#True
- issubset()
判断调用此函数的集合是否为该方法参数集合的子集。
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={1,2,3}
set4={1,2,3}
print(set2.issubset(set1))#False
print(set3.issubset(set1))#True
- issuperset()
判断该方法的参数集合是否为调用此函数的集合的子集
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={1,2,3}
set4={1,2,3}
print(set1.issuperset(set2))#False
print(set1.issuperset(set3))#True
- symmetric_difference()
返回两个集合中不重复的元素集合。(并交差)
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
print(set1.symmetric_difference(set2))
- symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
无返回
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set1.symmetric_difference_update(set2)
print(set1)#{1, 2, 3, 7, 8, 9}
- union()
返回两个集合的并集
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
set3={4,5,'a','b'}
#求两个集合的并集
print(set1.union(set2))
#求多个个集合的并集
print(set1.union(set2,set3))

被折叠的 条评论
为什么被折叠?



