集合set
""" 特点: 无序,自动去重 """
定义一个集合
setvar = {"刘德华","郭富城","张学友","王文"}
print(setvar , type(setvar) )
1.集合无序
res = setvar[0] error
print(res)
setvar[0] = "abc" error
2.自动去重
setvar = {"刘德华","郭富城","张学友","王文","王文","王文"}
print(setvar)
3.定义一个空的集合
setvar = {}
setvar = set()
print(setvar , type(setvar))
字典dict
"""
特点: 键值对存储的数据,表面上有序,实际上无序
语法: dictvar = {键1:值1 , 键2:值2, 键3:值3 ... }
字典的键: 推荐大家用变量命名的字符串进行使用
字典的键 和 集合的值 有数据类型上的要求
如下类型才可以: 不可变数据(可哈希的数据类型)
Number(int,float,bool,complex),str,tuple
不允许的类型 可变数据(不可哈希的数据类型)
list,set,dict
但凡提到哈希算法(hash),都是典型的无序特征
目的: 为了更加均匀的把数据分配到内存中,底层用了取模类似的算法;
python3.6版本,对字典做了优化,存储数据的时候用的哈希算法
但是在拿出数据的时候,重新按照定义的顺序做了排序
所以看起来有序,实际上无序
"""
1.定义一个空的字典
dictvar = {}
print(dictvar, type(dictvar))
2.定义一个普通的字典
dictvar = {"top":"程咬金" , "middle":"安其拉" , "bottom":"后裔" , "jungle":"李白" , "support":"宝蓝"}
3.获取字典的值
res = dictvar["top"]
print(res)
4.修改字典的值
dictvar["jungle"] = "乐言"
print(dictvar)
字典的键和集合的值有一定的要求
dictvar = {3:"aaa",False:"bbb",9+3j:"ccc",3.13:"ddd",(1,2,3):"fff","中文":"zzz"}
res = dictvar[(1,2,3)]
print(res)
print(dictvar)
dictvar = {[1,2,3]:"abc"} error
setvar = {"a",1,{"a":1,"b":2}} error