Python 篇章(十二)
一、Dict 概念
1. 什么是字典?
-
字典本质
- 键-值(key-value)存储 单位
- 字典 具有极快的查找速度
- 一个字典里可以存储多个键-值
- 字典是无序的!
-
key的特性
- 字典中的key必须唯一
- key必须是不可变对象(字符串、整数等都是不可变的,可作为key)(list列表是可变的,不能作为key)
-
字典就是用 花括号 将 一个或多个
key-value
括起来的 存储单位 -
左侧是key,右侧是value
-
例如
-
dict
和list
比较 -
dict
-
优点:查找和插入的速度极快,不会随着key-value的增加而变慢
-
缺点:需要占用大量的内存,内存浪费多
-
list
-
优点:占用空间小,浪费的内存小
- 缺点:查找和插入的速度会随着数据量的增多而减慢
-
2. 如何创建字典?
- 格式
- 字典名 =
- 示例
dict1 = {"tom":99,"lemon":100}
print(dict1) # {'tom': 99, 'lemon': 100}
二、字典操作
1. 增删改查
1.1 查看
- 格式:字典名[key]
- 注意:如果要查看的写入的 键名 不存在,会报错!!!
- 示例:
dict1 = {666:"good", "lemon":100}
print(dict1) # {666: 'good', 'lemon': 100}
print(dict1[666]) # good
print(dict1["lemon"]) # 100
# print(dict1["alex"]) # 报错;因为这个key不存在
1.2 追加 修改
- 格式:字典名[key] = value
- 示例:
dict2 = {"tom":60, "lemon":100}
# 追加一对key-value 'Abs': 70
dict2["Abs"] = 70
print(dict2)
# 因为一个key只能对应一个value值,所以,多次对一个key的value赋值,就是修改这个key的值
dict2["tom"] = 80
print(dict2)
1.3 pop() del() clear() 删除 清空
注意:不能删除不存在的 键值对
pop()
:删除指定的键值对- 示例
dict3 = {"tom": 80, "lemon": 100, "As": 70}
dict3.pop("As")
print(f"dict3 = {dict3}")
# dict3.pop("As") # 报错;因为这个键值对已经不存在了
del()
: 删除字典 或 指定的键值对- 示例
dict3 = {"tom": 80, "lemon": 100, "As": 70}
# 删除指定键值对
del dict3["As"]
print(f"dict3 = {dict3}")
# 删除字典
del(dict3)
clear()
:重置字典- 示例
dict3 = {"tom": 80, "lemon": 100, "As": 70}
# 重置字典
print(f"dict3 = {dict3}")
dict3.clear()
print(f"dict3 = {dict3}")
2. 字典函数 及 遍历
2.1 函数
get()
:如果key存在,返回其对应的value值,如果不存在,返回Nonekeys()
:查找字典中所有的key;返回可迭代对象,里面的数据是列表,列表中的元素都是字典中的key名values()
:查找字典中所有的value;返回可迭代对象,里面的数据是列表,列表中的元素都是字典中key名对应的value值items()
:查找字典中所有的键值对;返回可迭代对象,里面的数据是元组,元组数据1是字典key,元组数据2是字典key对应的value值- 示例
dict4 = {"tom":60,"lemon":100, "lily":79}
#1 get()
print(dict4.get("lemon")) # 返回的是100
print(dict4.get("alex")) # 返回的是None
#2 keys()
print(dict4.keys()) # dict_keys(['tom', 'lemon', 'lily'])
#3 values()
print(dict4.values()) # dict_values([60, 100, 79])
#4 items()
print(dict4.items()) # dict_items([('tom', 60), ('lemon', 100), ('lily', 79)])
2.2 遍历
keys()
:遍历字典中的所有keyvalues()
:遍历字典中的valueitems()
:同时遍历字典中的key和valueenumerate(dict)
:生成序列号;其实这种遍历方式是没有意义的,因为字典是无序的,即使有了序列号也是不稳定的- 示例
#1 keys()
dict5 = {"tom": 80, "lemon": 100, "As": 70}
for key in dict5.keys(): # key 键名
print("key = %s" % key)
# values()
dict6 = {"tom": 100, "lemon": 70, "As": 59}
for value in dict6.values(): # value 值
print("value = %d" % value)
# items()
dict7 = {"lemon": 100, "As": 70, "Bs": 59}
for key,value in dict7.items():
print(f"{key} = {value}")
# enumerate(dict)
dict8 = {"tom":60, "lemon":100, "lily":110}
for i, v2 in enumerate(dict8):
print(i, v2)
# 虽然在输出的时候看起来字典是有序的,但实际上字典在内存中就是无序的,这点毋庸置疑
三、练习题
# 需求:有一个字符串,在控制台输入一个单词统计出现过多少次
# count
W = input("请输入一个单词:")
Str = "lemon is a good man lemon is a nice man lemon is a cool man lemon is a good man lemon is a noble man lemon is a good man"
print(Str.count(W))
# 字典
W = input("请输入一个单词:")
d = {} # word:次数
Str = "lemon is a good man lemon is a nice man lemon is a cool man lemon is a good man lemon is a noble man"
t = Str.split(" ") # 以空格为分隔符截取字符串,将字符串切割成列表
for v in t:
c = d.get(v)
if c == None:
d[v] = 1
else:
d[v] += 1
print(d) # 每个单词的次数
print(d[W])
'''流程
1、以空格切割字符串
2、循环处理列表中的每个元素
3、以元素当作key去一个字典中提取数据
4、如果没有提取到,就以该元素作为key,1作为value 存进字典
5、如果提取到,将对应的key的value值修改,值加1
6、根据输入的字符串当作key再去字典取值
'''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律