python字典

举报
AOAIYI 发表于 2023/04/25 12:03:09 2023/04/25
【摘要】 字典是包含若干“键:值”元素的无序可变序列,字典中每个元素包含“键”和“值”两部分,表示一种映射或对应关系。定义字典时,每个元素的键和值用冒号分割开,不通风元素之间用逗号分隔,所有的元素放在一对大括号“{”和“}”中。

一、实验目的

掌握字典的语法以及应用

二、实验原理

字典是包含若干“键:值”元素的无序可变序列,字典中每个元素包含“键”和“值”两部分,表示一种映射或对应关系。定义字典时,每个元素的键和值用冒号分割开,不通风元素之间用逗号分隔,所有的元素放在一对大括号“{”和“}”中。

字典中的“键”可以是Python中任意不可变数据,如整数、实数、复数、字符串、元组等,但是不能使用列表、集合、字典或其他可变类型作为字典的“键”。另外,字典中“键”不允许重复,而“值”是可以重复的。

三、实验环境

Python 3.6以上

PyCharm

四、实验内容

字典

五、实验步骤

1.字典创建

1.使用赋值运算符“=”将一个字典赋值给一个变量即可创建一个字典变量。

a_dict={"server":"db.diveintopython3.org",'database':'mysql'}
a_dict

2.也可以使用内置函数dict()通过已有数据快速创建字典。

keys=['a','b','c','b']
values=[1,2,3,4]
dictionary=dict(zip(keys,values))
print(dictionary)

3.创建空字典

x=dict()
x
type(x)

4.空字典

x={}
x
type(x)

5.使用内置函数dict()根据给定的“键:值“来创建字典。

d=dict(name='Dong',age=37)
d

6.给定内容为“键”,创建“值”为空的字典。

adict=dict.fromkeys(["name","age","sex"])
adict

2.元素添加与修改

1.当指定键为下标为字典元素赋值时,有两种含义:①若该“键”存在,则表示修改该“键”对应的值,②若该“键”不存在,则表示添加一个新的“键:值”,也就是添加一个新元素。

修改元素值

aDict=dict(name="Dong",age=38,sex="male")
aDict['age']=18
aDict

添加元素

aDict['address']="SDIBT"
aDict

2.使用update()方法可以一次性将一个字典的“键:值”全部添加到当前的的字典中,若两个字典存在相同的键,则以另一个字典的值为标准对当前字典进行更新。

aDict={"name":"Dong","score":[98,97],"age":38,"sex":"male"}
#返回所有的元素
aDict.items()
#修改“age”键的值,同时添加新元素“a”:97
aDict.update({"a":97,"age":39})
aDict

3.字典对象的setdefault()方法用于返回指定“键”对应的的“值”,如果字典中不存在该“键”,就添加一个新元素,并设置该键对应的值

aDict={"name":"Dong","score":[98,97],"age":38,"sex":"male"}
#增加新元素
aDict.setdefault('address','SDIBT')
aDict

3.元素删除

1.使用del命令可以删除整个字典,也可以删除字典中指定的元素,继续上面的代码

#删除字典的一个元素
del aDict['age']
aDict
#删除整个字典
del aDict
#字典对象被删除后不再存在,此时会报错
aDict

2.使用字典对象的pop()和popitem()方法弹出并删除指定的元素

aDict={"name":"Dong","score":[98,97],"age":38,"sex":"male"}
#弹出指定键对应的元素
aDict.pop('sex')
#弹出一个元素,对空字典会抛出异常
aDict.popitem()
aDict

4.元素查找

1.字典中每个元素表示一种映射关系或对应关系,根据提供的键作为下标就可以访问对应的值,如果字典不存在这个“键”,字典会抛出异常。

aDict={"name":"Dong","score":[98,97],"age":38,"sex":"male"}
#指定的“键”存在,返回对应的值
aDict['age']
#指定的“键”不存在,抛出异常
aDict['address']

2.为了避免程序运行时应发异常而导致崩溃,在使用下标的方式访问字典时,最好能配合条件判断或者异常处理结构

aDict={"name":"Dong","score":[98,97],"age":38,"sex":"male"}
#使用if判断处理,先判断字典中是否存在指定的“键”
if "age" in aDict:
    print(aDict['age'])
else:
    print('Not Exists')

#使用异常处理
try:
    print(aDict['address'])
except Exception as e:
    print('Not Exists')

3.另外还可以使用Python中的get()方法返回字典中指定“键”的值,并且允许指定该键不存在时返回特定的值。

#如果字典中存在该键,则返回对应的值
aDict.get('age')
#指定的“键”不存在时,返回指定的默认值
aDict.get('address',"Not Exists")
aDict

4.当字典对象迭代时,默认是遍历字典的键,同时也可以使用items()方法遍历字典中的元素,即所有键值对。使用字典对象的keys()方法返回所有的键,values()方法返回所有的“值”.

aDict=dict(age=37,name="Dong",score=[98,97],sex='male')
#默认遍历字典的“键”
for key in aDict:
    print(key)

#使用items()方法遍历字典的元素
for item in aDict.items():
    print(item)

#使用keys()方法返回字典的所有键
aDict.keys()
#使用values()方法返回字典的所有值
aDict.values()

注意:内置函数len()、max()、min()、sum()、sorted()以及成员测试运算符in也适合字典对象,但是默认是作用于字典的“键”,若想作用于元素,即“键:值”对,则需要使用字典对象的items()方法来明确指定,若想作用于“值”,则需要使用values()方法明确指定。

5.综合案例

统计分析在很多领域都有重要的用途,如密码破解,图像直方图等。下面的代码首先生成包含1000个随机字符的字符串,然后统计每个字符出现的次数。

#导入模块
import string
import random
x=string.ascii_letters+string.digits+string.punctuation
x
#生成包含1000个随机字符的列表
y=[random.choice(x) for i in range(1000)]
#把列表中的字符连接成字符串
z=''.join(y)
d=dict()
for ch in z:
    #修改每个字符的词频
    d[ch]=d.get(ch,0)+1

print(d)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。