Python基础篇 -- 字典
2024-08-29 12:59:06
字典
dict. 以 {} 表示, 每一项用逗号隔开, 内部元素用 key: value的形式来保存数据
例子: dict.{"JJ":"林俊杰","Jay":"周杰伦"}
查询效率非常高,通过key来查找元素 内部使用key来计算一个内存地址(暂时) , hash 算法 . 要求 key 必须是不可变的数据类型(key 必须是课hash的数据类型)
字典没有切片
字典的增删改查
新增
# 第一种方法 直接增加
dic = {}
dic["巴萨"] = "梅西"
dic["尤文"] = "C罗"
print(dic) # 第二种方法
dic = {}
dic.setdefault("切尔西", "阿扎尔") #setfault 设置默认值
dic.setdefault("切尔西", "德罗巴")
print(dic)
# 打印结果是 {"切尔西":"阿扎尔"} 如果存在了key,不会替换掉原来的 如果 value 没有值 打印结果是 None
删除
dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"}
dic.pop("皇马") # 指定key删除 必须有一个参数
dic.popitem() # 随机删除
dic.clear() # 清空字典
del dic["key"] # 删除
修改和查询
# 修改
dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"} dic["key"] = "新value" # 替换掉key 所对应的旧 value dic2 = {"巴萨":"伊涅斯塔", "皇马":"拉莫斯", "曼城":"萨内"}
dic.update(dic2) # update :更新
print(dic)
# 打印结果为 {'巴萨': '伊涅斯塔', '皇马': '拉莫斯', '曼城': '萨内', '尤文': 'C罗', '巴黎': '内马尔'}# 查询
dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"}
print(dic["曼城"]) # 最直观, 直接用key 当key不存在时会报错 print(dic.get("皇马","value 不在这里") # 如果没有查询到key 会打印出 "value 不在这里" 这句话. 如果没有第二个参数 返回 None . setdefault() # 1. 新增( 先看有没有可以, 如果有就过, 没有执行新增 ) 2. 根据key 把值返回
字典的相关操作
dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"}
# 对字典的遍历
print(dic.keys()) # 得到一个像列表却不是列表的东西 dict_keys(['巴萨', '皇马', '曼城', '尤文', '巴黎'])
for key in dic.keys(): # 找到字典中的 key
print(key) # 打印key
print(dic[key]) # 打印value for key in dic: # 字典本身是一个可迭代对象,可以直接进行for循环. 找到字典中的 key
print(key)
print(dic[key]) for value in dic.values(): # 找到字典中的 value
print(value) # 打印value print(dic.items()) # 拿到的是key 和 value item 意思是 项
# 打印结果 : dict_items([('巴萨', '梅西'), ('皇马', '莫德里奇'), ('曼城', '萨内'), ('尤文', 'C罗'), ('巴黎', '内马尔')])
for item in dic.items():
print(item) # 打印结果是元组
('巴萨', '梅西')
('皇马', '莫德里奇')
('曼城', '萨内')
('尤文', 'C罗')
('巴黎', '内马尔')
print(item[0],item[1])
巴萨 梅西
皇马 莫德里奇
曼城 萨内
尤文 C罗
巴黎 内马尔 # 注:
a, b = (10, 20) # 解构 解包 前面变量的个数和后面解包的个一致
print(a) # 结果 10
print(b) # 结果 20 # 根据解构 可将 for item in dic.items(): 简化成下面的形式 for k, v in dic.items(): # 当需要遍历字典. 在操作中设计到key 和 value 的时候.
print(k)
print(v)
最新文章
- Spark RDD 核心总结
- js弹出框、对话框、提示框、弹窗总结
- fineUI ueditor(可能别的editor也有)配置注意事项
- Qt之qt4.7 和qt 4.8.4 交叉实践
- DOTween文档
- 详解Adorner Layer(zz)
- Oracle常用命令1
- 2014ACM/ICPC亚洲区牡丹江站 浙大命题
- win下Java环境安装
- php中怎么实现后台执行?
- 进程外session(session保存在sqlserver)
- ROS初探:(一)ROS架构
- 如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)
- Python append()方法--list
- Linux下/proc目录的作用
- leetcode 1004最大连续1的个数
- 小tips:JS中this操作执行像(object.getName = object.getName)()操作改变了this
- nginx简单使用配置
- hive中的with用法
- 我的vim(持续更新)
热门文章
- HDU2444 【二分图判定+最大匹配】
- NITACMOJ144稳定串
- Mybatis:resultMap的使用总结(转自https://www.cnblogs.com/kenhome/p/7764398.html)
- Codevs 1043 方格取数
- P4827 [国家集训队] Crash 的文明世界(第二类斯特林数+树形dp)
- 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
- zookeeper 搭建
- valgrind 使用入门
- Tinghua Data Mining 7
- Promise.then(a, b)与Promise.then(a).catch(b)问题详解