字典
Python字典是一种无序、可变的映射类型,用于存储键和值之间的对应关系。
Python字典是使用大括号 {}
包含的键值对集合,其中每个键值对由冒号 :
分隔,不同的键值对之间用逗号 ,
分隔。字典中的键必须唯一且不可变(例如字符串或数字),而值可以是任意类型的对象,包括复杂的数据类型。这种结构使得字典在存储和检索数据时非常高效,因为它利用了哈希表的特性,实现了快速的查找和更新操作。
Python字典的使用方法涉及多种操作,如创建、访问、修改、删除和遍历字典:
- 创建:可以直接通过字面量的方式创建字典,或者通过
dict()
函数将其他可迭代的数据类型转换为字典。
字典特点:符号为⼤括号数据为键值对形式出现各个键值对之间⽤逗号隔开注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v
# 1.有数据的字典:name的值Tom,age的值是20,gender的值是男
dict1 = {'name':"Tome",'age':20,'gender':'男'}
print(dict1)
print(type(dict1))
# 2.创建空字典
dict2 = {}
print(dict2)
print(type(dict2))
dict3 = dict()
print(dict3)
print(type(dict3))
- 访问:可以通过键来直接访问字典中的值。如果尝试访问不存在的键,会抛出
KeyError
异常。
注意:字典为可变类型。
dict1 = {'name':'Tom','age':20,'gender':'男'}
# 字典序列[key]=值
# id的值是110
dict1['id']=110
print(dict1)
dict1['name'] = 'ROSE'
print(dict1)
- 修改:可以通过指定新的键值对来更新字典,如果键已经存在,则其对应的值会被更新。
注意:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对
dict1 = {'name':'tom','age':20,'gender':'男'}
dict1['name'] = 'lily'
print(dict1)
dict1['id'] = 110
print(dict1)
- 删除:可以使用
del
语句根据键来删除字典中的元素
dict1 = {'name':'Tom','age':20,'gender':'男'}
# del 删除字典或指定的键值对
# del(dict1)
# print(dict1)
# del dict1['name']
# del dict1['names']
# print(dict1)
# clear()
dict1.clear()
print(dict1)
- 遍历:可以遍历字典的键、值或键值对。字典还提供了许多内置方法和属性,如
clear()
、copy()
、get()
、items()
、keys()
、setdefault()
、update()
和values()
等,以支持更复杂的操作。
dict1 = {'name':'TOM','age':20,'gender':'男'}
# 1. 遍历key
for key in dict1.keys():
print(key)
# 2.遍历value
for value in dict1.values():
print(value)
# 3.遍历Items
for item in dict1.items():
print(item)
# 4.键值对拆包
# xx.items() 返回可迭代对象,内部是元组,元组有2个数据
# 元组数据1是字典的key,元组数据2是字典的value
for key,value in dict1.items():
# print(key)
# print(value)
print(f'{key},{value}')
在使用Python字典时,需要注意以下几点:
- 键的唯一性:字典中的键必须是唯一的,如果有重复的键,后面的键值对会覆盖前面的。
- 键的不可变性:字典的键必须是不可变的类型,如字符串、数字或元组。列表或其他字典不能作为键使用。
- 访问不存在的键:在访问字典中不存在的键时,可以使用
get()
方法来避免KeyError
异常,该方法允许你提供一个默认值作为第二个参数。 - 字典的可变性:由于字典是可变的,它们本身不能作为哈希值使用,这意味着不能将字典作为其他字典的键。
总结来说,Python字典是一个非常灵活且功能强大的数据结构,适用于各种数据存储和快速检索的场景。在操作字典时,应确保键的唯一性和不可变性,并合理处理可能出现的异常情况。
集合
1、解释说明 Python中的集合(set)是一个无序的、不重复的元素序列。它的主要功能是进行成员关系测试和消除重复元素。集合对象还支持union(联合),intersection(交),difference(差)和symmetric difference(对称差集)等数学操作。
2、常见操作方法
创建集合
创建集合使⽤ {} 或 set() , 但是如果要创建空集合只能使⽤ set() ,因为 {} ⽤来创建空字典。
# 1.创建有数据的集合
s1 = {10,20,30,40,50} # {50, 20, 40, 10, 30} 说明集合是无序的
print(s1)
s2 = {10,30,20,40,30,20} # {40, 10, 20, 30} 说明集合是不能重复的
print(s2)
s3 = set('abcdefg')
print(s3) # {'g', 'c', 'f', 'a', 'b', 'e', 'd'}
# 2. 创建空集合:set()
s4 = set()
print(s4)
print(type(s4)) # <class 'set'>
s5 = {} # 创建字典
print(type(s5)) # <class 'dict'>
增加数据
s1 = {10,20}
# 1.集合是可变类型
# add()
s1.add(100)
print(s1)
s1.add(100)
print(s1)
# update() 增加的是序列 集合有去重功能
s1.update([10,20,30,40,50])
print(s1)
# s1.update(100) 增加单一数据报错
print(s1)
删除数据
s1 = {10,20,30,40,50}
# remove():删除指定数据,如果数据不存在报错
# s1.remove(10)
# print(s1)
#
# s1.remove(10) # 报错
# print(s1)
# discard():删除指定数据,如果数据不存在不报错
# s1.discard(10)
# print(s1)
#
# s1.discard(10)
# print(s1)
# pop():随机删除某个数据,并返回这个数据
del_num = s1.pop()
print(del_num)
print(s1)
查找数据
in:判断数据在集合序列
not in:判断数据不在集合序列
s1 ={10,20,30,40,50}
# in 或 not in 判断数据10是否存在
print(10 in s1) # True
print(10 not in s1) # False
求交集
s1 = {1,2,3}
s2 = {2,5,6}
# 求交集
print(s1 & s2)
求并集
s1 = {1,2,3}
s2 = {2,5,6}
# 求并集
print(s1 | s2)
求差集
s1 = {1,2,3}
s2 = {2,5,6}
# 求差集
print(s1-s2)
3、注意事项
- 集合中的元素必须是不可变的,例如字符串、数字或元组。
- 集合本身是可变的,可以添加或删除元素。
- 集合中不能有可变类型的数据,例如列表、字典或其他集合。
- 集合的交集、并集、差集等操作可以用运算符或者方法实现,但是结果都是一个新的集合,原集合不会被改变。