一 字典创建、访问、添加、删除、修改、内建函数、内建方法
创建,列表不能作为键,因为键不能变?字典也不能作为键
dict1 = {}
dict2 = {\'name\':\'qq\',\'sex\':\'male\',\'age\':1000,\'id\':{\'id1\':\'000\',\'id2\':\'001\'},(\'love\',\'idea\'):[\'book\',\'small\']}
访问,通过键的名称访问,若不存在,则抛出异常keyerror,访问格式为[][],不能嵌套,不能通过索引访问
print(dict2)
print(\'dict2["name"]\',dict2[\'name\'])
print(\'dict2["id"]["id1"]\',dict2[\'id\'][\'id1\'])
print(\'dict2[("love","idea’)][0]\',dict2[(\'love\',\'idea\')][0])
添加,通过新定义一个键并赋值的方法添加,或通过给原有键赋值的方法修改
dict1[\'name\'] = \'qq\'
print(\'dict1\',dict1)
dict1[\'name\'] = \'q\'
print(\'dict1\',dict1)
内建函数
print(len(dict2))#返回键的数目
print(str(dict2))
print(type(dict2))
dict.clear()删除字典内所有元素
dict1.clear()
print(dict1)
dict.copy():返回一个字典的浅复制
dict3 = dict2.copy()
print(\'dict3\',dict3)
dict.fromkeys():创建一个新字典,以序列seq中的元素做字典的键,val为字典所有键对应的初始值
lists = [1,2,3]
tuples = ("hello",3,(\'hello\',\'world\'),\'你好\',())
dict4 = dict.fromkeys(dict2,1)#若传入字典,则键不变,值按传入的参数统一,无传入参数则为none
dict5 = dict.fromkeys(tuples)#传入类型可为列表和元组,但其子元素类型不能为列表和字典
dict6 = dict.fromkeys(lists)
print(\'dict4\',dict4)
print(\'dict5\',dict5)
print(\'dict6\',dict6)
dict.get(key, default=None):返回指定键的值,如果值不在字典中则返回default值
print(\'dict2.get("name")\',dict2.get(\'name\'))
key in dict:如果键在字典dict里,则返回True,否则返回False
print(\'name\'in dict2)
dict.items():以列表返回可遍历的(键, 值) 元组数组
print(\'dict2.items()\',dict2.items())
dict.keys():以列表返回一个字典所有的键。
print(\'dict2.keys()\',dict2.keys())
dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default。
print(dict2.setdefault(\'hhh\',9))#这里hhh不存在,于是添加一个新键,值为default,而我default设为9
print(\'dict2\',dict2)
dict.update(dict2):把字典dict2的键/值对更新到dict里
dict7 = {1:1,\'name\':2}#这里的更新是指,把两个字典的键值对全放在1中如果有相同的,则由后者覆盖
dict7.update(dict2)
print(\'dict7\',dict7)
dict.values():以列表返回字典中的所有值
print(\'dict2.values()\',dict2.values())
判断字典是否为空
if dict2:
print(\'非空\')
else:
print(\'空\')
删除用del,与列表相似
二 集合创建、访问、更新、删除、操作符、内建函数、内建方法
创建,有两种集合,一种可变用set(添加和删除元素,是非可哈希,不能用作字典的键,也不能做其他集合的元素),一种不可变用frozenset与set相反(可作为键和集合元素)
列表不能哈希,不能作为参数传递,集合中元素不能相同
set1 = set((\'hello\',\'what\'))#{\'what\', \'hello\'}
set2 = set(\'python1123\')#{\'o\', \'1\', \'p\', \'3\', \'y\', \'h\', \'2\', \'t\', \'n\'}
set3 = frozenset(\'python321\')#frozenset({\'n\', \'2\', \'t\', \'y\', \'h\', \'1\', \'p\', \'3\', \'o\'})
set4 = set(\'python1234\')#{\'t\', \'1\', \'4\', \'3\', \'2\', \'y\', \'h\', \'n\', \'o\', \'p\'}
访问,只能通过遍历来实现
for i in set2:
print(i,end = \' \')
print(\'\')
判断元素是否在集合中
print(\'hello\'in set1)#True
print(\'hello\'not in set3)
判断两个集合的关系
print(set2==set3)#是否相等True
print(set2!=set3)#是否不等False
print(set2<=set3)#2是否为1的子集True,相当于issubset()
print(set2>=set3)#2是否为1的超集True,相当于issuperset()
print(set2>set3)#2是否为1的真超集False
print(set2<set3)#2是否为1的真字集False
对两个集合进行操作,以及一些内建函数
set5 = set3 & set4#求交集,也就是相同的部分,相当于intersection()
print(set5)#frozenset({\'y\', \'p\', \'t\', \'o\', \'3\', \'2\', \'1\', \'h\', \'n\'}),不可变优先。
set6 = set1|set2#求并集,也就是和在一起后再去重,相当于union()
print(set6)#{\'what\', \'2\', \'t\', \'y\', \'hello\', \'h\', \'p\', \'n\', \'1\', \'o\', \'3\'}
set7 = set4-set2#差集,可以形象的理解为前面减后面,有相同的就减掉了,前面有后面没有的就保留下来,相当于difference()
print(set7)#{\'4\'}
set8 = set6^set1#对称差分,就是把相同的去掉,不同的留下来,相当于 symmetric_difference()
print(set8)#{\'2\', \'y\', \'o\', \'n\', \'3\', \'1\', \'t\', \'p\', \'h\'}
set.update(t)用t中的元素修改set,即set现在包含set或t的成员。
set2.update(set1)
print(set2)#{\'t\', \'hello\', \'h\', \'2\', \'o\', \'what\', \'n\', \'3\', \'y\', \'p\', \'1\'}
s中的成员是共同属于s和t中的元素
set2.intersection_update(set1)
print(set2)#{\'what\', \'hello\'}
s中的成员是属于s但不包含在t中的元素。
set1.difference_update(set4)
print(set1)#{\'what\', \'hello\'}
添加元素
set1.add(\'hi\')
print(set1)#{\'what\', \'hi\', \'hello\'}
如果obj是集合s中的元素,从集合s中删除对象obj。
set1.discard(\'hello\')
print(set1)#{\'what\', \'hi\'}
任意删除一个元素并返回
print(\'set2.pop()\',set2.pop())
print(set2)#{\'hello\'}
#如果obj是集合s中的元素,从集合s中删除对象obj。
set4.remove(\'1\')
print(set4)#{\'h\', \'p\', \'n\', \'y\', \'o\', \'t\', \'2\', \'3\', \'4\'}
#清空集合
set4.clear()
print(set4)
内建函数
#可用len返回元素个数
print(len(set3))
print(tuple(set3))
print(list(set3))
print(str(set3))
#del 只能用于删除集合整体
#判断集合是否为空
if set4:
print(\'非空\')
else:
print(\'空\')