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)
# ('一梦', '水瓶座')
# ('冷毅毅', '射手座')
# ('香凝', '双鱼座')
# ('黛蓝', '双子座')
# {'一梦': '水瓶座', '冷毅毅': '射手座', '香凝': '双鱼座', '黛蓝': '双子座'}
相关推荐
冻柠檬飞冰走茶1 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing031 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
橙橙笔记1 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
雪落漂泊2 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
小小张说故事2 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
波力海苔夹心脆6753 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩3 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
天天被压力4 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力4 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A4 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python