python路4—字典、集合

本文详细介绍了Python中字典的基本操作,包括查询、修改、增加和删除等,并演示了如何使用get、setdefault等方法避免KeyError异常。此外,还介绍了集合的基本操作,如交集、并集、差集等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/python3
#字典---增删改查

#穿件一个字典info
>>> info = {
...     'student01':'TenLan Wu',
...     'student02':'LongZe Luola',
...     'student03':'XiaoZe Maliya'
... 
... }
 #字典查询                         
>>> info                
{'student03': 'XiaoZe Maliya', 'student01': 'TenLan Wu', 'student02': 'LongZe Luola'}
>>> info['student01']        #查询关键字student01对应的值,key不存在报错
'TenLan Wu'
>>> info.get('student01')    #询关键字student01对应的值,key不存在返回None
'TenLan Wu'
>>> info.get('student05')
>>> print (info.get('stu'))
None
>>> info.values()            #查询字典所有的值
dict_values(['XiaoZe Maliya', 'TenLan Wu', 'LongZe Luola'])
>>> info.keys()                #查询字典所有的关键字
dict_keys(['student03', 'student01', 'student02'])
>>> 'student01' in info        #字典info是否存在关键字student01
True
>>> 'student05' in info
False
#修改
>>> info['student01'] = 'Tomas'    
#增加
>>> info['student01']
'Tomas'
>>> info['student04'] = 'new student'
>>> info
{'student03': 'XiaoZe Maliya', 'student01': 'Tomas', 'student02': 'LongZe Luola', 'student04': 'new student'}
>>> info.setdefault('student01','default_name')        #key(student01)存在,不做操作,不存在就添加
'Tomas'
>>> info.setdefault('student06','default_name')
'default_name'
>>> info
{'student06': 'default_name', 'student03': 'XiaoZe Maliya', 'student01': 'Tomas', 'student02': 'LongZe Luola', 'student04': 'new student'}
>>> 
#删除
>>> del info['student04']
>>> info['student04']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'student04'

>>> info.pop('student03')
'XiaoZe Maliya'
>>> info['student03']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'student03'
>>> info.popitem()            #随机删除一组key,value
('student01', 'Tomas')
>>> 
>>> print (info.get('stu'))
None

##
>>> info
{'student02': 'LongZe Luola', 'student04': 'new student'}
>>> b = {'student01':'new_student1','student02':'TangSheng'}
>>> info.update(b)        #用b去更新info,key相同则不该,key不同添加
>>> info
{'student04': 'new student', 'student01': 'new_student1', 'student02': 'TangSheng'}
>>> 
>>> 
>>> dic = dict.fromkeys([6,7,8],'test')        #初始化一个字典,三个keyy(6,7,8),value位test,
>>> dic
{8: 'test', 6: 'test', 7: 'test'}
>>> dic2 = dict.fromkeys([6,7,8],[1,{'name':'tangsheng'},444])
>>> dic2
{8: [1, {'name': 'tangsheng'}, 444], 6: [1, {'name': 'tangsheng'}, 444], 7: [1, {'name': 'tangsheng'}, 444]}
>>> dic2[7][1]['name']        #多级字典
'tangsheng'
>>> 
>>> info.items()    #字典转化成列表
dict_items([('student04', 'new student'), ('student01', 'new_student1'), ('student02', 'TangSheng')])
>>> print (info.items())
dict_items([('student04', 'new student'), ('student01', 'new_student1'), ('student02', 'TangSheng')])
>>> 
##循环字典

>>> for i in info :
...     print (i)
... 
student04
student01
student02
>>> for i in info:
...     print (i,info[i])
... 
student04 new student
student01 new_student1
student02 TangSheng
>>> for k,v in info.items():
...     print (k,v)
... 
student04 new student
student01 new_student1
student02 TangSheng
>>> 

#多级字典
>>> multi_dic = {
...     '湖北省':{
...         '武汉市':['武昌','汉口','汉阳'],
...         '荆州市':['监利','朱河','沙市'],
...         '宜昌':['三游动','三峡大坝','清江画廊']
...     },
...     '湖南省':{
...         '长沙市':['橘子洲','爱晚亭','长沙晚报'],
...         '岳阳市':['岳阳楼','洞庭湖','沙丘'],
...         '株洲市':['炎帝广场','神龙公园','石峰公园']
... 
...     },
...     '河南省':{
...         '郑州市':['嵩山','博物院','二七纪念塔'],
...         '洛阳市':['龙门石窟','白马寺','丽景门'],
...         '开封市':['开封府','特塔公园','清明上河图']
... 
...     }
... 
... }
>>> 
>>> 
>>> multi_dic
{'湖北省': {'荆州市': ['监利', '朱河', '沙市'], '武汉市': ['武昌', '汉口', '汉阳'], 
'宜昌': ['三游动', '三峡大坝', '清江画廊']}, 
'河南省': {'洛阳市': ['龙门石窟', '白马寺', '丽景门'], 
'开封市': ['开封府', '特塔公园', '清明上河图'], 
'郑州市': ['嵩山', '博物院', '二七纪念塔']}, 
'湖南省': {'长沙市': ['橘子洲', '爱晚亭', '长沙晚报'], 
'株洲市': ['炎帝广场', '神龙公园', '石峰公园'], '岳阳市': ['岳阳楼', '洞庭湖', '沙丘']}}
>>> multi_dic['湖北省']['武汉市'][1]
'汉口'
>>> multi_dic['湖北省']['武汉市'][1] += ',广埠屯'
>>> multi_dic['湖北省']['武汉市'][1]
'汉口,广埠屯'
>>> multi_dic
{'湖北省': {'荆州市': ['监利', '朱河', '沙市'], 
'武汉市': ['武昌', '汉口,广埠屯', '汉阳'], 
'宜昌': ['三游动', '三峡大坝', '清江画廊']},
 '河南省': {'洛阳市': ['龙门石窟', '白马寺', '丽景门'],
 '开封市': ['开封府', '特塔公园', '清明上河图'], 
 '郑州市': ['嵩山', '博物院', '二七纪念塔']}, 
 '湖南省': {'长沙市': ['橘子洲', '爱晚亭', '长沙晚报'],
 '株洲市': ['炎帝广场', '神龙公园', '石峰公园'], '岳阳市': ['岳阳楼', '洞庭湖', '沙丘']}}
>>> 

#集合set

>>> list_1 = [1,2,3,4,6,7,6,8,7,9]
>>> set_1 = set(list_1)            #列表转化成集合
>>> set_1
{1, 2, 3, 4, 6, 7, 8, 9}
>>> set_2 = set([2,3,4,5,10,22,43,])    #创建集合set_2
>>> set_1,set_2
({1, 2, 3, 4, 6, 7, 8, 9}, {2, 3, 4, 5, 10, 43, 22})
>>> set_1.intersection(set_2)            #交集
{2, 3, 4}
>>> set_1.union(set_2)                    #并集
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 43, 22}
>>> set_1.difference(set_2)                #差集 ,in set_1 but  no in set_2
{8, 1, 9, 6, 7}
>>> set_3 = set([1,2,6])
>>> set_3.issubset(set_1)                #set_3 是否set_1的子集
True
>>> set_1.issuperset(set_3)                #set_1 是否set-3 的父集
True
>>> set_1.symmetric_difference(set_2)    #对称差集,合并set_1和set_2,并去掉去掉相同的元素
{1, 5, 6, 7, 8, 9, 10, 22, 43}
>>> set_1.isdisjoint(set_2)                #set_1和 set_2有交集返回False,没有返回True
False
>>> set_1 & set_2         #交集
{2, 3, 4}
>>> set_1 | set_2         #并集
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 43, 22}
>>> set_1 - set_2         #差集
{8, 1, 9, 6, 7}
>>> set_1 ^ set_2         #对称差集
{1, 5, 6, 7, 8, 9, 10, 22, 43}
#
>>> set_1.add(999)        #添加一个元素
>>> set_1
{1, 2, 3, 4, 6, 7, 8, 9, 999}
>>> set_1.update([9999,99999,9999999])        #添加多个元素
>>> set_1
{1, 2, 3, 4, 6, 7, 8, 9, 999, 9999, 9999999, 99999}
>>> set_1.remove(2)            #删除一个元素,如果该元素不存在,就报错
>>> set_1.remove(1)
>>> set_1.remove(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 0
>>> len(set_1)                #集合的长度
10
>>> '2' in set_1           #元素’2‘是否在集合set_1中
False
>>> '22' not in set_1
True
>>> set_1.pop()            #随机删除集合中的一个元素
3
>>> set_1.discard (2)    #删除集合元素2,如果不存在do noting
>>> set_1.discard (4)
>>> set_1
{6, 7, 8, 9, 999, 9999, 9999999, 99999}
>>> set_1.discard (6)
>>> set_1.discard (55)

转载于:https://www.cnblogs.com/tobet/p/6925268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值