Python基础5 - 字典与集合:(1)字典

目录

字典的操作函数

[一. 创建与删除](#一. 创建与删除)

(一)直接创建

(二)映射函数创建字典

(三)创建有键无值字典

[二. 访问字典](#二. 访问字典)

[三. 遍历字典](#三. 遍历字典)

(一)遍历键值对

(二)遍历键或值

[四. 添加、修改、删除字典元素](#四. 添加、修改、删除字典元素)

(一)添加和修改

(二)判断并删除

[五. 字典推导式](#五. 字典推导式)


字典是无序的、可变的,保存的内容是以"键-值"对的形式存储。其中,键是唯一的,而值可以有多个。

字典的操作函数

  1. len(字典名):返回字典长度(键值对个数)
  2. min(字典名):返回键的最小值
  3. max(字典名):返回键的最大值
  4. dict( ):生成空字典
  5. 字典名.keys( ):返回所有键的信息
  6. 字典名.values( ):返回所有值的信息
  7. 字典名.items( ):返回所有键值对
  8. 字典名.get(key, default):键存在,则返回相应值;键不存在,返回default的内容
  9. 字典名.pop(key, default):键存在,则返回相应值,并删除键值对;键不存在,则返回default的内容
  10. 字典名.popitem( ):随机取出一个键值对,以元组形式返回,同时将该键值对再字典中删除
  11. 字典名.clear( ):删除所有键值对,形成空字典
  12. dict.fromkeys(列表名):创建有键无值字典(列表元素转化为键)
python 复制代码
zidian = {"键1":"值1","键2":"值2","键3":"值3","键4":"值4"}
print(type(zidian))
# <class 'dict'>

一. 创建与删除

(一)直接创建

字典名 = dict( )

python 复制代码
diction = dict(一梦='水瓶座',冷毅毅='射手座',香凝='双鱼座',带蓝='双子座')
print(diction)
# {'一梦': '水瓶座', '冷毅毅': '射手座', '香凝': '双鱼座', '带蓝': '双子座'}

(二)映射函数创建字典

字典名 = dict(zip(列表1, 列表2))

python 复制代码
name = ["一梦","冷毅毅","香凝","黛蓝"]
sign = ["水瓶座","射手座","双鱼座","双子座"]
for i in zip(name,sign):
    print(i)
diction = dict(zip(name,sign))
print(diction)
# ('一梦', '水瓶座')
# ('冷毅毅', '射手座')
# ('香凝', '双鱼座')
# ('黛蓝', '双子座')
# {'一梦': '水瓶座', '冷毅毅': '射手座', '香凝': '双鱼座', '黛蓝': '双子座'}
python 复制代码
name = ["一梦","冷毅毅","香凝","黛蓝"]
sign = [[1,2,3],'四五六',(7,8,9),10]
diction = dict(zip(name,sign))
print(diction)
# {'一梦': [1, 2, 3], '冷毅毅': '四五六', '香凝': (7, 8, 9), '黛蓝': 10}
python 复制代码
name = [10,(7,8,9),'四五六',[1,2,3]]
sign = [[1,2,3],'四五六',(7,8,9),10]
try:
    diction = dict(zip(name,sign))
except TypeError:
    print("列表不能作为键!!!")
# 列表不能作为键!!!

(三)创建有键无值字典

字典名 = dict.formkeys(列表名)

python 复制代码
name_list = ["一梦","冷毅毅","香凝","黛蓝"]
diction = dict.fromkeys(name_list)
print(diction)
# {'一梦': None, '冷毅毅': None, '香凝': None, '黛蓝': None}

二. 访问字典

字典名'键名'

python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
print(diction['一梦'])
# ['水瓶座', 24]

字典名.get('键','键不存在时执行的语句')

python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=(18,'射手座'),香凝='双鱼座',带蓝=18)
print(diction.get("带蓝","字典中不存在此键"))
print(diction.get("依依","字典中不存在此键"))
# 18
# 字典中不存在此键

三. 遍历字典

(一)遍历键值对

字典名.items( )

python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
for i in diction.items():
    print(i)
# ('一梦', ['水瓶座', 24])
# ('冷毅毅', ('射手座', 18))
# ('香凝', '双鱼座')
# ('带蓝', 18)

(二)遍历键或值

python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
for i,j in diction.items():
    print(i,"的值为:",j)
# 一梦 的值为: ['水瓶座', 24]
# 冷毅毅 的值为: ('射手座', 18)
# 香凝 的值为: 双鱼座
# 带蓝 的值为: 18

字典名.keys( ):获取字典所有的键

字典名.values( ):获取字典所有的值

python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
for i in diction.keys():
    print(i)
for i in diction.values():
    print(i)
# 一梦
# 冷毅毅
# 香凝
# 带蓝
# ['水瓶座', 24]
# ('射手座', 18)
# 双鱼座
# 18

四. 添加、修改、删除字典元素

(一)添加和修改

字典名键名 = 值

  1. 若字典中没有该键,则在字典一系列键值对后面创建新键值对
  2. 若字典中存在该键,则修改该键对应的值
python 复制代码
# 添加
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
diction["碧琪"] = "巨蟹座"
print(diction)
# {'一梦': ['水瓶座', 24], '冷毅毅': ('射手座', 18), '香凝': '双鱼座', '带蓝': 18, '碧琪': '巨蟹座'}
python 复制代码
# 修改
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
diction["碧琪"] = "魔羯座"
print(diction)
# {'一梦': ['水瓶座', 24], '冷毅毅': ('射手座', 18), '香凝': '双鱼座', '带蓝': 18, '碧琪': '魔羯座'}

(二)判断并删除

字典名.getkey, default

  1. 若键名key存在,则返回相应的值
  2. 若键名key不存在,则返回default的内容
python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
print(diction.get("一梦"))
print(diction.get("二梦"))
print(diction.get("二梦","没有'二梦'键值对"))
# ['水瓶座', 24]
# None
# 没有'二梦'键值对

del 字典名键名

python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
print(diction.get("一梦"))
del diction["一梦"]
print(diction.get("一梦","没有'一梦'键值对"))
# ['水瓶座', 24]
# 没有'一梦'键值对

字典名.pop(key, default)

  1. 若键key存在,则返回相应值,并删除键值对
  2. 若键key不存在,则返回default的内容
python 复制代码
diction = dict(一梦=['水瓶座',24],冷毅毅=('射手座',18),香凝='双鱼座',带蓝=18)
print(diction.pop("香凝"))
print(diction.pop("香凝","没有'香凝'键值对"))
# 双鱼座
# 没有'香凝'键值对

五. 字典推导式

python 复制代码
import random
randomdict = {random.randint(1,10) : random.randint(10,100) for i in range(10)}
print(randomdict)
# {8: 90, 3: 90, 2: 48, 4: 95, 7: 37, 6: 30}
python 复制代码
name = ["一梦","冷毅毅","香凝","黛蓝"]
sign = ["水瓶座","射手座","双鱼座","双子座"]
for i in zip(name,sign):
    print(i)
diction = {i:j for i,j in zip(name,sign)}
print(diction)
# ('一梦', '水瓶座')
# ('冷毅毅', '射手座')
# ('香凝', '双鱼座')
# ('黛蓝', '双子座')
# {'一梦': '水瓶座', '冷毅毅': '射手座', '香凝': '双鱼座', '黛蓝': '双子座'}
相关推荐
默_笙5 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技5 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时5 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
奇思妙想聪明勤奋的小羊5 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1235 天前
2026年第38周GitHub趋势周报
python·科技·github