1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python-基础知识-字典dict和集合set

Python-基础知识-字典dict和集合set

时间:2018-08-01 07:12:48

相关推荐

Python-基础知识-字典dict和集合set

字典

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

>>> stu = {'Michael': 95, 'Bob': 75, 'Tracy': 85} #创建字典>>> stu['Michael']95

字典的特性:

dict是无序的key必须是唯一的,所以自动去重

字典的基本操作:

增加删除修改查找

一、增加和修改

>>> info = {...'stu1101': "TengLan Wu",...'stu1102': "LongZe Luola",...'stu1103': "XiaoZe Maliya",... } #创建一个字典info>>>>>> info{'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}>>> info["stu1104"] = "苍井空" #增加一个,如果没有这个键就增加,否则就修改这个键>>> info{'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}

二、删除

>>> info.pop("stu1101") #字典的内置方法,删除键名为stu1101'TengLan Wu'>>> info{'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1102': 'LongZe Luola'}>>> del info['stu1103'] #python自带的删除方法,删除键名为stu1103>>> info{'stu1104': '苍井空', 'stu1102': 'LongZe Luola'}>>> info.popitem() #随机删除一个('stu1104', '苍井空')>>> info{'stu1102': 'LongZe Luola'}

三、查找

>>> 'stu1102' in info#判断成员关系True>>> info.get('stu1102') #查找方法,如果查找对象不存在,此方法不报错,没有返回结果'LongZe Luola'>>> info['stu1105'] #此方法查找不存在的对象会报错Traceback (most recent call last):File "<stdin>", line 1, in <module>KeyError: 'stu1105'

四、获取字典中所有键名、值和键值对

>>> info = {...'stu1101': "TengLan Wu",...'stu1102': "LongZe Luola",...'stu1103': "XiaoZe Maliya",... }>>>>>>>>> info.values() #获取值dict_values(['XiaoZe Maliya', 'TengLan Wu', 'LongZe Luola'])>>> info.keys() #获取键名dict_keys(['stu1103', 'stu1101', 'stu1102'])>>> info.items() #获取键值对,以list的方式返回dict_items([('stu1103', 'XiaoZe Maliya'), ('stu1101', 'TengLan Wu'), ('stu1102', 'LongZe Luola')])

五、setdefault方法

>>> info.setdefault("stu1106","Alex")'Alex'>>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}>>> info.setdefault("stu1102","龙泽萝拉") #因为字典中已有stu1102,并且字典有自动去重功能'LongZe Luola'>>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

六、update方法

>>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}>>> info.update(b) #将字典b加入到字典info中>>> info{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

七、循环字典

#方法1,建议使用for key in info:print(key,info[key])#方法2for k,v in info.items(): #会先把dict转成list,数据里大时莫用print(k,v)

八、多级嵌套字典及字典

>>> football = {... '英超':{... '曼联':{... '积分':60,... '进球':45,... '排名':1... },... '阿森纳':{... '积分':55,... '进球':30,... '排名':4... },... '切尔西':{... '积分':59,... '进球':40,... '排名':2... }... },... '中超':{... '广州恒大':{... '积分':45,... '进球':25,... '排名':1... },... '上海上港':{... '积分':20,... '进球':10,... '排名':2... },... '江苏苏宁':{... '积分':30,... '进球':40,... '排名':3... }... },... '西甲':{... '巴萨':{... '积分':60,... '进球':55,... '排名':1... },... '皇马':{... '积分':55,... '进球':59,... '排名':2... },... '马竞':{... '积分':55,... '进球':58,... '排名':3... }... }...}>>> football['中超']['广州恒大']{'进球': 25, '积分': 45, '排名': 1}>>> football['中超']['广州恒大']['积分']45

集合

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

集合的主要作用:

去重,把一个列表变成集合,就自动去重了关系测试,测试两组数据之前的交集、差集、并集等关系

集合的基本操作:

创建增加删除

一、创建

>>> set1 = set([1,3,4,5,99,54,22])>>> set2 = set([3,22,5,6,7,10,4])>>> set1{1, 99, 3, 4, 5, 54, 22}>>> set2{3, 4, 5, 6, 7, 10, 22}>>>>>> set3 = set("Hello") #创建一个唯一字符的集合>>> set3{'e', 'l', 'H', 'o'}

二、增加

>>> set1.add(20)>>> set1{1, 99, 3, 4, 5, 20, 54, 22}>>> set2.update([10,37,42])>>> set2{3, 4, 5, 6, 7, 37, 10, 42, 22}

三、删除

>>> set1.remove(1) #如果元素不存在,会报错>>> set1{99, 3, 4, 5, 54, 22}>>> set1.discard(100) #如果元素存在就删除,不存在则do nothing>>> set1{99, 3, 4, 5, 54, 22}>>> set1.pop() #使用pop()随意删除一个99>>> set1{3, 4, 5, 54, 22}>>> len(set1) #set 的长度5

四、集合

>>> set1 = set([1,3,4,5,99,54,22])>>> set2 = set([3,22,5,6,7,10,4])>>> set1{1, 99, 3, 4, 5, 54, 22}>>> set2{3, 4, 5, 6, 7, 10, 22}#包含set1和set2中的每一个元素,取并集(即A和B)>>> set1.union(set2){1, 99, 3, 4, 5, 6, 7, 10, 54, 22}>>> set3 = set1 | set2>>> set3{1, 99, 3, 4, 5, 6, 7, 10, 54, 22}#包含set1和set2中相同的元素,取交集(即AB中都有的)>>> set1.intersection(set2){3, 4, 5, 22}>>> set3 = set1 & set2>>> set3{3, 4, 5, 22}#包含set1中有但是set2中没有的元素,取差集(即A有B没有)>>> set1.difference(set2){1, 99, 54}>>> set3 = set1 - set2>>> set3{1, 99, 54}#包含set1和set2中不重复的元素,取对称差集(即A有B没有,B有A没有)>>> set1.symmetric_difference(set2){1, 6, 7, 99, 10, 54}>>> set3 = set1 ^ set2>>> set3{1, 6, 7, 99, 10, 54}#set4是否set5的子集>>> set4 = set([1,2,3,4,5,6,7,8,9])>>> set4{1, 2, 3, 4, 5, 6, 7, 8, 9}>>> set5 = set([1,3,5,7,9])>>> set5{1, 3, 5, 9, 7}>>> set4.issubset(set5)False>>> set4{1, 2, 3, 4, 5, 6, 7, 8, 9}>>> set6 = set4 <= set5>>> set6False#set4是否包含set5的全部元素>>> set4.issuperset(set5)True>>> set4{1, 2, 3, 4, 5, 6, 7, 8, 9}>>> set6 = set4 >= set5>>> set6True

五、成员关系测试

>>> set7 = set([1,2])>>> set7{1, 2}>>> 1 in set7 #测试1是否是set7的成员True>>> set7 = set([1,2,100])>>> set7{1, 2, 100}>>> 100 not in set7 #测试100是否不是set7的成员False

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。