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)
# ('一梦', '水瓶座')
# ('冷毅毅', '射手座')
# ('香凝', '双鱼座')
# ('黛蓝', '双子座')
# {'一梦': '水瓶座', '冷毅毅': '射手座', '香凝': '双鱼座', '黛蓝': '双子座'}
相关推荐
kruptos26 分钟前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌37 分钟前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc2 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库2 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H2 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒2 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP2 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
2601_962382433 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅3 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
江畔柳前堤3 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native