【Python21天学习挑战赛】字典 && 小数据池


活动地址:CSDN21天学习挑战赛

开头一叙:
无论是以后学习需要或者是三年后的工作需要,都需要用到python的工具,也接着这次活动的机会,把python系统的学一遍。跟着大佬,让python知识从入门到精通。



字典—dict

作用:存储数据的,存储大量数据,可变的数据类型,无序的;比列表快。将数据和数据之间进行关联。

字典定义
 dic={"孙悟空":80,"唐僧":100,"猪八戒":89,True:123,(12,2,3):["dada","憨憨"]} #字典中逗号分割是一个元素
 # "孙悟空"(键):80(值)       --键值对
 print(dic)
{'孙悟空': 80, '唐僧': 100, '猪八戒': 89, True: 123, (12, 2, 3): ['dada', '憨憨']}
  • 字典的键:必须是可哈希的,也就是不可变的数据类型(字符串就是不可变的数据类型)–避免哈希冲突使用开放寻址法。 字典的键要求唯一,若是有重复的后边的值将前面的值覆盖
  • 字典的值:可以任意
  • 和列表的区别:
    • 列表是有序的对象集合
    • 字典是无序的对象集合
字典的操作:增、删、改、查

1、增:
(1)暴力添加

dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
dic["白骨精"]=78   #暴力添加
print(dic)
{'孙悟空': 80, '唐僧': 100, '猪八戒': 89, '白骨精': 78}

(2)dic.setdefault():若白骨精这个键去字典查询,如果不存在执行添加,存在就不添加了

dic.setdefault("孙悟空",78)
print(dic)
#   输出:(1){'孙悟空': 80, '唐僧': 100, '猪八戒': 89}
dic.setdefault("白骨精",78)
print(dic)
#   输出: (2){'孙悟空': 80, '唐僧': 100, '猪八戒': 89, '白骨精': 78}

2、删
(1)方式1、通过键值对的键去删除键

dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
del dic["孙悟空"]
print(dic)
{'唐僧': 100, '猪八戒': 89}

(2)通过键值对的键去删除键,有返回值,返回的是被删除的值

print(dic.pop("孙悟空") )
#   输出:80
print(dic)
# # 输出:{'唐僧': 100, '猪八戒': 89}

(3)dic.clear()

dic.clear()
print(dic)
# 输出:{}

3、改

(1)当字典中没有某个键值对的时候就是添加,存在的话就是修改

dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
dic["孙悟空"]="孙猴子" #当字典中没有某个键值对的时候就是添加,存在的话就是修改
print(dic)
# 输出:{'孙悟空': '孙猴子', '唐僧': 100, '猪八戒': 89}

(2)dic.update()

dic.update({"黄梅眉大王":89,"观音":56,"孙悟空":100})
print(dic)
# 输出:{'孙悟空': 100, '唐僧': 100, '猪八戒': 89, '黄梅眉大王': 89, '观音': 56}
dic1={"黄梅眉大王":89,"观音":56,"孙悟空":100}
dic1.update(dic)
print(dic1)
# 输出:{'黄梅眉大王': 89, '观音': 56, '孙悟空': 80, '唐僧': 100, '猪八戒': 89}

4、查

dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
# for i in dic:       #循环获取的是字典中每个键值对的键
#     print(i)
print(dic.get("孙悟空"))  #通过键值对中的键获取键值对的值
print(dic.get("沙僧"))    #若字典没有对应的键,返回None
#   输出:80
#        None
字典的其他操作
dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
# for i in dic:
#     print(i,dic.get(i)) #获取所有键值对
print(dic.keys()) #高仿列表,获取所有的键,支持for循环遍历,不支持索引
# 输出:dict_keys(['孙悟空', '唐僧', '猪八戒'])
print(dic.values()) #高仿列表,获取所有的值
# 输出:dict_values([80, 100, 89])
print(list(dic.values()))#  转换成列表
#   输出:[80, 100, 89]
print(dic.items())
for i in dic.items():
    print(i)
dict_items([('孙悟空', 80), ('唐僧', 100), ('猪八戒', 89)])
('孙悟空', 80)
('唐僧', 100)
('猪八戒', 89)

字典的嵌套:

dic={1001:["刘备","关羽","张飞"],
     1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
     1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
     1004:{"韦小宝":[{"教主夫人":["教主"]},{"阿柯":"刺客"},{"双儿","天地会"},{"爱新觉罗建宁":"公主"}]}
     }
# 找出教主
print(dic[1004]["韦小宝"][0]['教主夫人'][0])
# 找出熊二
print(dic[1002]["汪峰"]["前妻2"][1])

小数据池

代码块

1、定义:一个模块,一个函数,一个类,一个文件等都是一个代码块。

在python解释器中,每一行代码就是一个代码块

is 与 == 区别

1、== 是判断两边的值是否相等

a=10
b=10
print(a==b)
#	输出:True

2、is是比较两边的地址内存是否相等

a=10
b=10
print(a is b)   #is基于内存地址进行判断
#	输出:True
小数据池

1、什么是小数据池
答:小数据池,也称为小整数缓存机制,或者称为驻留机制等等

针对整数:
答:Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。
针对字符串:
答:在同一代码块下,只有内容相同就采用相同的内存地址,乘法的时候总长度不能超过20,乘法的时候中文,特殊符合乘以0或者1
针对布尔值:
在同一代码块下,只有内容相同就采用相同的内存地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我菜就爱学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值