基础数据类型之dict/set

‘’’
1.Dict即字典,代表一个键/值存储库,像映射表,给定一个键,搜索该键对应的值
字典被认为是键/值对得列表

dict如何表示? 类比java中的map,key-value,键值对的形式出现
前面曾经说过的访问模型:直接存取,序列,映射。字典就是一种映射模式(mapping type)。

和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
‘’’
a_dict = {}
print(a_dict)
print(type(a_dict))
a_dict = {‘name’:‘tom’, ‘age’:22} #注意看dict的结构

获取元素:
a_dict = {‘name’:‘tom’, ‘age’:22}
print(a_dict[‘name’]) #可根据key
注意:
key不能重复,不可改变
key不存在就添加元素
key存在时就修改元素

如何判断key在不在dict中?
a_dict = {‘name’:‘tom’, ‘age’:22}
print(‘age’ in a_dict) #True
print(a_dict.contains(‘name’)) #True
if ‘age’ in a_dict:
print(a_dict[‘age’]) #返回value值
get函数:
a_dict = {‘name’:‘tom’, ‘age’:22}
print(a_dict.get(‘name’)) #tom 注意:找不到返回None

	操作dict中元素;
				a_dict = {'name':'tom', 'age':22}
				print(a_dict.pop('ame','找不到ame'))   #第一个参数要删除的值,第二个为默认参数
				a_dict = {'name':'tom', 'age':22,'titli':123456}
				a_dict.popitem()
				print(a_dict)   #移除最后一个    注意:3.6之前是无序的会随机删除一个   3.6之后是有序的只会删除最后一个
				当然:clear方法在这里也可以使用
						a_dict = {'name':'tom', 'age':22,'titli':123456}
							a_dict.clear()
							print(a_dict)   #{}

	其他操作:
				a_dict = {'name':'tom', 'age':22,'titli':123456}
				b_dict = a_dict.copy()
						print(b_dict)    #{'name': 'tom', 'age': 22, 'titli': 123456}
						print(a_dict)   #{'name': 'tom', 'age': 22, 'titli': 123456}
				c_dict = dict.fromkeys([1, 2, 3], 'ok')    #[1, 2, 3]为key,ok为所有key的value值
				print(c_dict)   #{1: 'ok', 2: 'ok', 3: 'ok'}
				
	zip函数:将对象中对应的元素打包成一个个元组
					num  = dict(zip([1,2,3,4],[5,6,7,8]))
					print(num)			  #{1: 5, 2: 6, 3: 7, 4: 8}
	
	setdefault函数:
						a_dict = {'name':'tom', 'age':22,'titli':123456}
						a_dict.setdefault('sex','nan')    #不存在添加
						a_dict.setdefault('nme')          #value不添加默认为None
						print(a_dict)   #{'name': 'tom', 'age': 22, 'titli': 123456, 'sex': 'nan', 'nme': None}
	字典的更新:
					a_dict = {'name':'tom', 'age':22,'titli':123456}
					b_dict = {'1':2,'2':3}
					b_dict.update(a_dict)     #将a_dict 元素更新到b_dict 中
					print(a_dict)   #{'name': 'tom', 'age': 22, 'titli': 123456}
					print(b_dict)  #{'1': 2, '2': 3, 'name': 'tom', 'age': 22, 'titli': 123456}

‘’’
set集合
2.什么是set?
(1)集合概念对象:我们可以感觉到的客观存在以及我们思想中的事物
或抽象符号,都可以 称作对象.
(2)集合:把一些能够确定的不同的对象看成一个整体,就说这个整体是由
这些对象的全体构成的集 合.
(3)元素:集合中每个对象叫做这个集合的元素.

	'''
		b_set = {}
		print(type(b_set))    #<class 'dict'>
		a_set = set()
		print(type(a_set))   #<class 'set'>
						
		添加元素:
				a_set = set()
				a_set.add(1)
				print(a_set)    #添加已有的会覆盖之前的,去重
		
		update方法:
				c_set = {1,2,3}
				c_set.update((2,4,5))
				print(c_set)   #{1, 2, 3, 4, 5}
		删除元素:
				c_set = {1,2,3}
				c_set.remove(1)
				print(c_set)   #{2, 3}  注意:不存在会报错
				Clare方法在此也可以用,哈哈,方便不
				c_set = {1,2,3}
				c_set.clear()
				print(c_set)   #set()
		set集合的简单用法;
						a = [1,2,3,4,1,1,1,1,5,2,1,1]
						print(set(a))   #{1, 2, 3, 4, 5}   删除重复元素

		不可改变集合:
					a = frozenset({1,2,3,4,1,1,1,1,5,2,1,1})
					a.add(4)
					print(a)   #错误:AttributeError: 'frozenset' object has no attribute 'add'
		判断元素是否在集合中:
							a = frozenset({1,2,3,4,1,1,1,1,5,2,1,1})
							print(4 in a)  #True
							删除集合本身:
									a = frozenset({1,2,3,4,1,1,1,1,5,2,1,1})
									del a
									print(a)  #NameError: name 'a' is not defined
							复制集合:
									a = frozenset({1,2,3,4,1,1,1,1,5,2,1,1})
									b = a.copy()
									print(a)   #frozenset({1, 2, 3, 4, 5})
									print(b)   #frozenset({1, 2, 3, 4, 5})
		set运算:
				a_set = {1, 2, 3}
				b_set = {4, 5, 6}
				print(2 in a_set, 4 not in a_set)    
				print(5 in a_set, 2 not in b_set)
				print(a_set == b_set, a_set != b_set)
				a_set = {1, 2, 3}
				b_set = {1, 2, 3, 4, 5}
				print(a_set < b_set, a_set <= b_set)    #根据长度比较
				print(b_set >= a_set, b_set > a_set)     #根据长度比较
														
				a_set = {1, 2, 3}
				b_set = {2, 3, 4}
				print(a_set & b_set)  # 交集 intersection   共同存在的{2, 3}
				print(a_set | b_set)  # 并集 union         去掉重复的{1, 2, 3, 4}
				print(a_set - b_set)  # 差集,仅包含在前不包含在后  difference       项在a_set中不在b_set中  结果:{1}
				print(b_set - a_set)  # 差集,后到前    结果:4
				print(a_set ^ b_set)  # 异或运算			在a_set中不在b_set中,在b_set中不在a_set中		

‘’’
list,dict,set有什么特点: (概念)
字典及集合的特性:
1.查找元素速度快
2.占用内存空间的大,空间换时间:

List
3.List中元素可以重复出现
4.Set只出现key
字典的键,以及集合中的元素 都为不可变对象。

可变对象与不可变对象 int str tuple() 不可变 list set 可变对象
调用内置方法原来的对象不发生改变。
‘’’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值