python中的dict与set以及可变对象

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>一样的道理

/*以上纯属学习笔记,有误请你指出,非常感谢,我们一同进步*/




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值