1.dict与c++中的map操作基本是一样的(目前看来),主要是键值的映射关系操作操作方法如下:
dict_test = {'a': 1, 'b': 2, 'c': 3}
print(dict_test['a']) #output 1
print('z' in dict_test) #output false
print(dict_test.get('z')) #output None
上面分别是创建映射,输出映射值,判断是否有'z'这个键,直接用get方法输出若存在这个键值关系会直接输出没有就输出none
dict是一种牺牲空间换取时间的方法,高效的搜索,同时它的键是不可变对象,python中str和整形是不可变对象(list是可变对象,因此若用list当作键是不行的)
2.set与c++中的set操作基本是一样的(目前看来),在搞acm时经常用set来处理一些数据,c++中set的特性是会自动从小到大排列将值,同时会去掉重复的值,且是没有键的直接处理值的,想要遍历需要迭代器;在python当中是有很大区别的,【注意】:要创建一个set需要list当作输入集合,它会去掉集合中的重复的,但是并不会对集合中的元素进行从小到的排序,具体操作如下:
dict_test = set(['a', 'b', 'h', 'c', 'd', 'a', 'c'])
print(dict_test) #output {'d', 'a', 'b', 'c', 'h'}
dict_test.add('f')
print(dict_test) #output {'d', 'a', 'b', 'f', 'c', 'h'}
dict_test.remove('b')
print(dict_test) #output {'d', 'a', 'f', 'c', 'h'}
同时set还是可以当作集合交集和并集操作的,如下代码:
dict_test = set(['a', 'b', 'h', 'c', 'd', 'a', 'c'])
print(dict_test) #dict_test output {'d', 'a', 'b', 'c', 'h'}
dict_test1 = dict_test
dict_test1.add('f')
print(dict_test | dict_test1) #dict_test | dict_test1 output {'a', 'b', 'f', 'd', 'c', 'h'}
print(dict_test1) #dict_test1 output {'f', 'a', 'b', 'd', 'c', 'h'}
dict_test2 = dict_test
dict_test2.remove('b')
print(dict_test2) #dict_test2 output {'f', 'a', 'd', 'c', 'h'}
print(dict_test1 & dict_test2) #dict_test1 & dict_test2 output {'a', 'f', 'd', 'c', 'h'}
之前说了python中str也就是字符串属于不可变类型,下面举个例子,见代码:
str_test = 'abc';
str_test1 = str_test.replace('a', 'd')
print(str_test) #str_test output abc
print(str_test1) #str_test1 output dbc
也就是说不可变对象是可以当作键的,就像c++中 map<string, int>一样的道理
/*以上纯属学习笔记,有误请你指出,非常感谢,我们一同进步*/