字典深识 id is == 小数据池初始 day5

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窗口反馈的

猜你喜欢

转载自www.cnblogs.com/shmilyxue/p/9862623.html
今日推荐