Python字典与集合

一 字典创建、访问、添加、删除、修改、内建函数、内建方法

创建,列表不能作为键,因为键不能变?字典也不能作为键

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('空')
posted @ 2020-03-03 23:04  茕祇  阅读(63)  评论(0编辑  收藏  举报