python小白入门基础(七:集合与字典)
# set 集合 作用:用作交差并补操作
'''不可获取, 无序,自动去重'''
setvar = {"周杰伦","刘亦菲","胡歌"}
print(setvar,type(setvar))
# 不可以获取集合里的值
# print(setvar[0]) 显示error
#不可以修改集合里的值
# print(setvar[2])="赵丽颖" 显示error
#可以自动去重
setvar = {"周杰伦","刘亦菲","胡歌","胡歌","刘亦菲"}
print(setvar)
#定义一个空集合
setvar = {} #这种定义的是字典
print(setvar,type(setvar))
#定义空集合
setvar = set()
print(setvar,type(setvar))
# dict 字典类型 {}
'''由键值对组成来存储数据,本质看起来无序,实则有序'''
"""
#语法:
dictvar = {"key1":"value1","key2":"value2"}
左边是键右边是值,键值之间用冒号隔开,
键值对与键值对之间又逗号,隔开
3.6版本之前都是 字典和集合都是无序的
3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,
根据字面顺序重新排序,所以看起来像有序,但本质上无序
"""
dictvar = {"name":"李云飞","age":"18","stu":"帅哥"}
print(dictvar,type(dictvar))
#获取(查)字典里面的值:
res = dictvar["age"]
print(res)
#修改字典里面的值:
dictvar["name"] = "王彬"
print(dictvar)
dictvar.update({'car':'特斯拉'})
'''当update中的字典没有键值对时就添加进来,如果有就修改
里边对应的值'''
print(dictvar)
#字典中的键值对是由哈希算法算出来的
'''只有是使用了哈希算法,那么这个数据就是散列无序的,
因为要把数据均匀的分布存储在内存当中,减少哈希碰撞'''
"""
可哈希数据:
可哈希的数据 (不可变的数据):Number(int float bool complex) str tuple
不可哈希的数据 (可变的数据): list set dict
"""
# 如下定义字典的语法是允许的,但是不要使用,定义字典的键,一般按照变量命名的方式定义一个字符串.
dictvar = {123:[2,3.9,True,'王五'],'aaa':'你好','age':'18',(1,2,3):{3,2,8}}
print(dictvar)
# 集合的值也必须可哈西 (不可变数据)
'''但凡是不可哈希的数据都不能作为集合的值'''
# setvar = {1,9,"abc",(1,2,3),[1,2,3]} error
# setvar = {1,9,"abc",(1,2,3,[1,2,3]) } error
print(setvar)