Python基础05

目录

1.Python字典(dict )

1.1创建字典

1.2访问字典里的值

1.3修改字典

1.6字典常用API

1.6.1操作字典的函数

1.6.2字典的方法

2.Python集合(set)

2.1创建集合

2.2添加元素

2.3移除元素

2.4计算集合元素个数

2.5清空集合

2.6判断元素是否存在集合中

2.7集合其他内置方法                                           


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))
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值