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)
# ('一梦', '水瓶座')
# ('冷毅毅', '射手座')
# ('香凝', '双鱼座')
# ('黛蓝', '双子座')
# {'一梦': '水瓶座', '冷毅毅': '射手座', '香凝': '双鱼座', '黛蓝': '双子座'}
相关推荐
侧耳倾听1111 小时前
java 日志框架简介
java·开发语言
小赵AI手记1 小时前
技术拆解(十七)具身智能:机器人动作生成为何走向Diffusion Policy?
人工智能·笔记·python·机器人
本地化文档2 小时前
poethepoet-docs-l10n
python·github·gitcode·sphinx
baopixiaoz2 小时前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
zlinear数据采集卡2 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
全栈技术负责人2 小时前
解密 MCP(Model Context Protocol):大模型时代的“Type-C”总线与三驾马车架构深度解析
开发语言·ai·架构
丰锋ff2 小时前
1.7在Qt窗口中添加右键菜单
开发语言·qt
Titan20242 小时前
Linux网络学习:套接字、UDP的封装与应用
linux·服务器·开发语言·网络·c++
Uncommon.2 小时前
使用Pytorch自动计算梯度
人工智能·pytorch·python