day5
一.字典dict
字典(dict)是以{ }括起来的键值对组成,在dict中key是唯一的.在保存的时候, 根据key来计算出多个内存地址. 然后将key-value保存在这个地址中.
这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key必须是可hash(不可变)的, 可哈希, 暂时可以这样记.
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set
key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据
字典是无序的,但在Python3.6及以后只是显示是打印有序的......
1.1字典操作
dic{键:值}
增:
dic{键:值}
dic[键] = 值
print(dic)
dic = {'剑圣':'易','托儿所':'剑豪','大宝剑':'盖伦'}
dic["娃娃鱼"] ="罗玉凤"
print(dic)
#{'剑圣': '易', '托儿所': '剑豪', '大宝剑': '盖伦', '娃娃鱼': '罗玉凤'}
dic.setdefault("娃娃鱼")
print(dic)
#{'剑圣': '易', '托儿所': '剑豪', '大宝剑': '盖伦', '娃娃鱼': None}
#添加不写值就是None
dic.setdefault("娃娃鱼","罗玉凤")
print(dic)
#{'剑圣': '易', '托儿所': '剑豪', '大宝剑': '盖伦', '娃娃鱼': '罗玉凤'}
#setdefault第一个参数是键,第二个参数是值 存在就填上,不存在值就是None
删:pop----popitem----del---del[]--dic.clear
字典删除没有remove
s = dic.pop("剑圣")
dic = {'剑圣':'易','托儿所':'剑豪','大宝剑':'盖伦'}
s = dic.pop("剑圣") #给参数,参数是键
print(s) #pop返回的是被删除的值
print(dic)
#{'托儿所': '剑豪', '大宝剑': '盖伦'}
s = dic.popitem() #随机删除
print(s) #popitem返回的是被删除的键值对,以元组形式显示
#('大宝剑', '盖伦')
print(dic)
#{'剑圣': '易', '托儿所': '剑豪'}
#随即删除 在pyth36中删除最后一个 在pyth35及一下随机删除
del dic #删除整个字典
print(dic)
del dic["托儿所"] #通过dic["键"]删除
#{'剑圣': '易', '大宝剑': '盖伦'}
改:
# dic ={'剑圣': '易', '托儿所': '剑豪', '大宝剑': '盖伦', '娃娃鱼': '罗玉凤'}
# dic["托儿所"] = "亚索"
# print(dic) # 当哈啥给是字典中的健这样写就是修改对应的值,如果不存在就是添加
# {'剑圣': '易', '托儿所': '亚索', '大宝剑': '盖伦', '娃娃鱼': '罗玉凤'}
#
# dic.update({"大宝剑":"轮子哥"})
# print(dic) #当update中的字典里没有dic中键值对就添加到dic字典中,如果有就修改里边的对应的值
#{'剑圣': '易', '托儿所': '剑豪', '大宝剑': '轮子哥', '娃娃鱼': '罗玉凤'}
查:
dic ={'剑圣': '易', '托儿所': '剑豪', '大宝剑': '盖伦', '娃娃鱼': '罗玉凤'}
s = dic["大宝剑"]
print(s) #通过健来查看,如果这个健不在这个字典中.就会报错
#盖伦
s = dic.get("剑圣")
print(s)
dic ={'剑圣': '易', '托儿所': '剑豪', '大宝剑': '盖伦', '娃娃鱼': '罗玉凤'}
s = dic.get("a")
print(s)
# None #通过健来查看,如果这个健不在这个字典中.就会返回None
s = dic.get("剑圣")
print(s)
#易
其他操作
输出键
lis = dic.keys()
print(lis)
输出值
list = dic.values()
print(list)
一个高仿列表,存放是多个元祖,元祖中第一个是字典中的键,第二个是字典中的值
list = dic.items()
print(list)
解构
# a,b = 1,2
# print(a) #1
# print(b) #2
# a = 10
# b = 20
# a,b=b,a
# print(a) #20
# print(b) #10
# a,b=[1,2]
# print(a)
# print(b)
循环字典获取键和值
for a,b in dic.items:
print(a,b)
字典的嵌套:
# dic = {'name':'汪峰',
# 'age':48,
# 'job':'输出',
# 'wife':[{'name':'葛慧杰','age':20,'job':'输入','baby':'小苹果'},
# {'name':'国际章','age':23,'job':'国际输入','baby':['胸大','熊二']}],
# }
获取"小苹果"
# print(dic["wife"][0]["baby"])
小数据池:
小数据池,只针对,整数,字符串,bool值
# 数字
# -5 ~ 256
# 字符串 乘法总数长度不能超过20个,0和1除外
# 不能有特殊字符
is id ==
== 是比较的两边的数值是否相等,而 is 是比较的两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。
is 需要以cmd窗口反馈的