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)

访问字典

可以使用dict[key] ,当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)

运行如图:

相关推荐
曲幽2 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程7 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪7 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook7 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田20 小时前
使用 pkgutil 实现动态插件系统
python
前端付豪1 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽1 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战1 天前
Pydantic配置管理最佳实践(一)
python
阿尔的代码屋1 天前
[大模型实战 07] 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent
人工智能·python
AI探索者2 天前
LangGraph StateGraph 实战:状态机聊天机器人构建指南
python