Python入门(7):Python序列结构-字典

字典Dictionary

字典(dictionary)和列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的为容是以"键-值对"的形式存放的。

Python 中的字典相当于 Java 或者 C++中的 Map 对象。在C#中,就是Dictionary<TKey,TValue>

字典的主要特征如下

① 通过键而不是通过索引来读取

字典有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
② 字典是任意对象的无序集合
字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找顺序。
③字典是可变的,并且可以任意嵌套
字典可以在原处增长或者缩短(无须生成一份拷贝),并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典),
④ 字典中的键必须唯、
不允许同一个键出现两次,如果出现两次,则后一个值会被记住。
⑤ 字典中的键必须不可变
字典中的键是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表

字典的定义和删除

定义字典时,每个元素都包含两个部分"键"和"值",并且在"键"和"值"之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号"{}"中。使用del命令来删除字典

空字典

dictionary={} 或者 dictionary=dict()

创建字典

通过映射函数创建字典

语法如下:

dictionary = dict(zip(list1,list2))
参数说明如下:
dictionary:表示字典名称。
zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的 zip 对象。如果想得到元组,可以将 zip 对象使用 tuple()函数转换为元组;如果想得到列表,则可以使用 list()函数将其转换为列表。

listl:表示一个列表,用于指定要生成字典的键。

list2:表示一个列表,用于指定要生成字典的值。如果 listl 和 list2 的长度不同,则与最短的列表长度相同

通过指定的键值对创建字典

在 Python 中,还可以使用 dict 对象的 fromkeys()方法创建值为空的字典,语法如下:

dictionary= dict.fromkeys(list1)

访问字典

可以使用dictkey ,当key不存在时抛出异常

dict.get(key,default) 当key不存在时,返回None

遍历字典

使用字典对象的 items()方法可以获取字典的"键-值对"列表。其语法格式如下:

dictionary.items()

dictionary.keys()

dictionary.values()

字典推导式

randomdict ={i:random.randint(10,100) for i in range(1,5)}

测试字典程序如下:

python 复制代码
import random

gjqt3={1:"北洛",2:"云无月",3:"岑缨"}
print("古剑奇谭3字典:",gjqt3)
swordNames=("钟","剑","斧","壶","塔")
swordValues=["东皇钟","轩辕剑","盘古斧","炼妖壶","昊天塔","伏羲琴"]
#组合成字典时,选择集合长度较短的,多余的将忽略
dictionary=dict(zip(swordNames,swordValues))
print("十大神器:",dictionary)
print("------向字典中添加元素------")
dictionary["琴"]="伏羲琴"
dictionary.__setitem__("鼎","神农鼎")
print(dictionary)
pal3=dict(role1="景天",role2="雪见",role3="龙葵",role4="紫萱")
print("仙剑三:",pal3)
print("------使用[Key],get()函数来访问字典的元素------")
print(pal3["role3"])
print(pal3["role5"] if "role5" in pal3 else "不存在role5")
print(pal3.get("role2","不存在"))
print("------遍历字典items()函数,每个元素为元组(key,value)------")
for item in pal3.items():
    print(item)
for key,val in pal3.items():
    print(key,"=",val)
print("------创建值为空的字典------")
dictionary=dict.fromkeys(["死亡骑士","巫妖","地穴领主","恐惧魔王"])
print(dictionary)
print("------clear()方法将字典设置为空字典------")
dictionary.clear()
print(dictionary)
print("------字典推导式------")
randDict={i:random.randint(10,100) for i in range(1,8)}
print(randDict)

运行如图:

相关推荐
Csvn3 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽4 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817536 小时前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱19 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei1 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
aqi001 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用
Csvn1 天前
`functools.lru_cache` —— 一行代码搞定缓存加速
后端·python
金銀銅鐵2 天前
[Python] 从《千字文》中随机挑选汉字
后端·python
cup112 天前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill