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)

运行如图:

相关推荐
Learn-Python3 小时前
MongoDB-only方法
python·sql
小途软件4 小时前
用于机器人电池电量预测的Sarsa强化学习混合集成方法
java·人工智能·pytorch·python·深度学习·语言模型
扫地的小何尚4 小时前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
wanglei2007085 小时前
生产者消费者
开发语言·python
清水白石0085 小时前
《从零到进阶:Pydantic v1 与 v2 的核心差异与零成本校验实现原理》
数据库·python
昵称已被吞噬~‘(*@﹏@*)’~5 小时前
【RL+空战】学习记录03:基于JSBSim构造简易空空导弹模型,并结合python接口调用测试
开发语言·人工智能·python·学习·深度强化学习·jsbsim·空战
2501_941877985 小时前
从配置热更新到运行时自适应的互联网工程语法演进与多语言实践随笔分享
开发语言·前端·python
酩酊仙人5 小时前
fastmcp构建mcp server和client
python·ai·mcp
且去填词6 小时前
DeepSeek API 深度解析:从流式输出、Function Calling 到构建拥有“手脚”的 AI 应用
人工智能·python·语言模型·llm·agent·deepseek
rgeshfgreh7 小时前
Python条件与循环实战指南
python