Python初学(字典、集合)

字典

格式

字典名 = {}

dict1 = {}
print(type(dict1))
# 输出结果<class 'dict'>

元素

键值对。 注意:键是唯一的,值是允许重复的。

添加

字典名[key] = value

注意:key是唯一的,所以在添加的时候如果出现同名的key,后面key对应的value则替换原来的。

dict1['name'] = '测试'
print(dict1)
# 输出结果{'name': '测试'}
dict1['name'] = '测试'
dict1['age'] = '18'
dict1['sex'] = '男'
dict1['name'] = '233'
print(dict1)
# 输出结果{'name': '233', 'age': '18', 'sex': '男'}

修改

键可以添加或者删除但是不能修改。只能修改键后面的值。

字典名[key] = 新的value  与添加一样,确定是添加还是修改取决于字典里有没有键,存在是修改,不存在是添加。

删除

clear()

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
dict1.clear()
print(dict1)
# 输出结果为{}

pop()

根据key实现删除,删除的是键值对。pop的返回值key对应的value。

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.pop('sex')
print(r)
# 输出结果 男
print(dict1)
# 输出结果 {'name': '测试', 'age': '18'}

popitem()

返回值是元组:(key,value)从后往前删除

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.popitem()
print(r)
# 输出结果('sex', '男')
print(dict1)
# 输出结果{'name': '测试', 'age': '18'}

del

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
del dict1['age']
print(dict1)
# 输出结果{'name': '测试', 'sex': '男'}
del dict1 # 整个变量都删除了

取值

get(key,默认值选填) 根据key得到value的值

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.get('name')
print(r)
# 输出结果为测试

当然我们也可以使用 dict1['name']的方式取值,但是如果输入的key不存在,get函数返回为None,而另外的方式则会报错。get还有另一种好处,如果输入的key不存在,则会返回默认值。所以一般我们取值都会使用get。

遍历

如果使用for...in直接遍历字典,取出的是字典的key。

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
for i in dict1:
    print(i)
# 输出结果为name  age  sex

获取字典中所有的值

values()

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.values()
print(r)
# 输出结果为dict_values(['测试', '18', '男'])
for i in dict1.values():
    print(i)
# 输出结果为测试  18   男

获取字典中所有的键

keys()

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.keys()
print(r)
# 输出结果为dict_keys(['name', 'age', 'sex'])

获取键值对

items()

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.items()
print(r)
# 输出结果为dict_items([('name', '测试'), ('age', '18'), ('sex', '男')])

可以使用此函数获取到所有的key和value

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.items()
print(r)
# 输出结果为dict_items([('name', '测试'), ('age', '18'), ('sex', '男')])
for k, v in dict1.items():
    print(k, v)
# 输出结果为name 测试, age 18, sex 男

补充

在这里补充一些函数介绍。

setdefault()

可以添加键值对,类似 dict['key'] = value,但是如果有相同的key时 不会修改数据,这个方法了解就好。

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
dict1.setdefault('联系方式','123456789')
print(dict1)
# 输出结果{'name': '测试', 'age': '18', 'sex': '男', '联系方式': '123456789'}

update()

可以实现两个字典的合并

dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
dict2 = {'联系方式': '123456789'}
dict1.update(dict2)
print(dict1)
# 输出结果{'name': '测试', 'age': '18', 'sex': '男', '联系方式': '123456789'}

集合

特点

没有重复,无序的,所以没有下标。

格式

变量名 = {值} 花括号里不是以键值对的方式存在,而只有值时类型为集合。

set1 = set() # 声明空的set
set2 = {"ceshi"}
print(type(set2))
# 输出结果为<class 'set'>

使用

如果给了一个列表[1,1,7,7,9,2,5,5,3,4] 我们可以快速的去重

list1 = [1, 1, 7, 7, 9, 2, 5, 5, 3, 4]
print(set(list1))
# 输出结果为{1, 2, 3, 4, 5, 7, 9}

添加

add()

set3 = set()
set3.add("测试")
print(set3)
# 输出结果为{'测试'}
set3.add("练习")
print(set3)
# 输出结果为{'练习', '测试'}

update()  

合并方法

set3 = {'学生', '老师', '学校', '校长'}
set1 = {'主任'}
set1.update(set3)
print(set1)
# 输出结果为{'校长', '学校', '老师', '学生', '主任'}

注意:每次运行时顺序都是不一样的,set是无序的。

删除

clear()

将元素清空

set3 = {'学生', '老师', '学校', '校长'}
set3.clear()
print(set3)
# 输出结果为set()

remove()

将元素从集合中删除,如果元素不存在则会报错。

set3 = {'学生', '老师', '学校', '校长'}
set3.remove('学生')
print(set3)
# 输出结果{'校长', '学校', '老师'}

discard()

也是将元素从集合中删除,如果元素不存在不会报错。

set3 = {'学生', '老师', '学校', '校长'}
set3.discard('学生')
print(set3)
# {'校长', '学校', '老师'}

pop()

随机删除集合中的任意一个元素

set3 = {'学生', '老师', '学校', '校长'}
set3.pop()
print(set3)

其他方法

方法描述
add()向集合添加元素。
clear()删除集合中的所有元素。
copy()返回集合的副本。
difference()返回包含两个或更多集合之间差异的集合。
difference_update()删除此集合中也包含在另一个指定集合中的项目。
discard()删除指定项目。
intersection()返回为两个其他集合的交集的集合。
intersection_update()删除此集合中不存在于其他指定集合中的项目。
isdisjoint()返回两个集合是否有交集。
issubset()返回另一个集合是否包含此集合。
issuperset()返回此集合是否包含另一个集合。
pop()从集合中删除一个元素。
remove()删除指定元素。
symmetric_difference()返回具有两组集合的对称差集的集合。
symmetric_difference_update()插入此集合和另一个集合的对称差集。
union()返回包含集合并集的集合。
update()用此集合和其他集合的并集来更新集合。

其中可以使用这三种符号 &、|、- 分别 代表交集、并集、差集

列如

set1 = {1, 2, 3, 4, 5, 6}
set2 = {3, 4, 5, 6, 7, 8}
print(set1 & set2)  # 交集 {3, 4, 5, 6}
print(set1 | set2)  # 并集 {1, 2, 3, 4, 5, 6, 7, 8}
print(set1 - set2)  # 差集 {1, 2}

总结

区别

list:允许重复,有序  有下标 [ ]

tuple:允许重复,里面的元素不能增加删除修改,只能查看 ( )

dict:键值对存在,键:唯一,值:允许重复 { }

set:不允许重复,无序  { }

类型转换

list ----------》tuple,set(转换set时可能会发生去重,长度发生改变)

tuple ----------》list,set(转换set时可能会发生去重,长度发生改变)

set ----------》list,tuple

dict ----------》list,tuple,set 只是将字典的key放到了list,tuple,set中

list ----------》dict 需要特殊要求 例如list1 = [('a',1),('b',2),('c',3)] 这种格式才能转换 里面的结构不限list或者tuple

 

  • 46
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值