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)

运行如图:

相关推荐
Blossom.11816 分钟前
基于深度学习的图像分类:使用Capsule Networks实现高效分类
人工智能·python·深度学习·神经网络·机器学习·分类·数据挖掘
CodeCraft Studio24 分钟前
借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
开发语言·python·html·markdown·aspose·html转markdown·asposel.html
悠哉悠哉愿意43 分钟前
【电赛学习笔记】MaxiCAM 项目实践——与单片机的串口通信
笔记·python·单片机·嵌入式硬件·学习·视觉检测
封奚泽优1 小时前
使用Python实现单词记忆软件
开发语言·python·random·qpushbutton·qtwidgets·qtcore·qtgui
Goona_1 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
xw33734095642 小时前
彩色转灰度的核心逻辑:三种经典方法及原理对比
人工智能·python·深度学习·opencv·计算机视觉
倔强青铜三2 小时前
为什么 self 与 super() 成了 Python 的永恒痛点?
人工智能·python·面试
墨尘游子2 小时前
目标导向的强化学习:问题定义与 HER 算法详解—强化学习(19)
人工智能·python·算法
小白学大数据3 小时前
基于Python的新闻爬虫:实时追踪行业动态
开发语言·爬虫·python
freed_Day3 小时前
python面向对象编程详解
开发语言·python