Python基础学习(五)

本文深入讲解Python中字典的使用方法,包括字典的创建、访问、修改、删除及遍历,同时介绍了字典与其他数据结构的嵌套应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,今天跟大家分享Python中字典的常见用法。
1、什么是字典
字典是Python语言中唯一的映射类型。
映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。
字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。
2、 创建字典
简单的说就是用大括号({}),包裹的键值对的集合。键和值之间用冒号隔开,但不同的键值对之间用用逗号隔开。格式如下:
字典名={‘key’:’value’,’key’:’value’}
示例如下:

stu={'name':'Wang Yang','age':15}
print(stu['name'])
print(stu['age'])

结果如下:
在这里插入图片描述
其中,需要注意以下几点:
1) 键与值用冒号“:”分开;
2) 项与项(即不同的键值对)用逗号“,”分开;
3) 字典中的键必须是唯一的,而值可以不唯一。
4) 倘若字典中的值是数字,最好转换成字符串格式。如:‘015’
3、使用字典
1) 访问字典
首先创建一个字典,其次返回键key对应值value。如下例:

stu={'name':'Wang Yang,Li Ming','age':'015,016'}
print(stu['name']+' '+str(stu['age']))

结果如下:
在这里插入图片描述
2) 检查key是否在字典中
给大家提供两种方法,如果大家安装Python3 可能会报错,如下图,大家用第二种方法即可。
在这里插入图片描述
①has_key()方法 形如:adict.haskey(‘name’) 有–>True,无–>False
②in 、not in 形如:‘name’ in adict 有–>True,无–>False
举例如下:

alien={'color':'green','points':5}
#alien.haskey('color')
'name' not in alien

结果如下:
在这里插入图片描述
3) 增加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对, 可依次指定字典名、用方括号括起的键和相关联的值。举例如下:

alien={'color':'green','points':5}
alien['name']='kulou'
alien['location']=(0,25)
print(alien)

结果如下:
在这里插入图片描述
有时候需要先创建一个空字典,然后再去添加键值对,如上例也可以写成:

alien={}
alien['color']='green'
alien['points']='5'
alien['name']='kulou'
alien['location']=(0,25)
print(alien)

4) 删除键值对
对于字典中不再需要的信息,可使用del 语句将相应的键—值对彻底删 除。使用del 语句时,必须指定字典名和要删除的键。如下例:

alien_0={'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)

结果如下:
在这里插入图片描述
5) 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。举例,首先创建一个字典alien,其颜色为红色,x坐标为0,y坐标为10,速度为中速;然后根据其速度快慢来改变其位置,修改其颜色。代码如下:

alien={'color':'red','x_p':0,'y_p':10,'speed':'medium'}
print('orignal'+' '+'x_p:'+str(alien['x_p'])+' '+'y_p:'+str(alien['y_p']))
if alien['speed']=='slow':
    x_inc=3
    y_inc=2
    alien['color']='yellow'
elif alien['speed']=='medium':
    x_inc=2
    y_inc=3
    alien['color']='green'
else:
    x_inc=1
    y_inc=4
    alien['color']='black'
alien['x_p']=alien['x_p']+x_inc
alien['y_p']=alien['y_p']+y_inc
print('now'+' '+'x_p:'+str(alien['x_p'])+' '+'y_p:'+str(alien['y_p']))
print(alien)

结果如下:
在这里插入图片描述
4、 遍历字典
新建一个字典,adict = {‘color’: ‘green’, ‘points’: 5}
1) 遍历字典的key(键)
for key in adict.keys():print (key)
2) 遍历字典的value(值)
for value in adict.values(): print(value)
3) 遍历字典的项(元素)
for item in adict.items():print(item)
4) 遍历字典的key-value
for key,value in adict.items(): print(’\nkey: '+key) print('value: '+value)
将所有遍历举例如下:

adict = {'color': 'green', 'points': '5'} 
print(adict)
for key in adict.keys():
    print(key)
for value in adict.values(): 
    print(value)
for item in adict.items():
    print(item)
for key,value in adict.items(): 
    print('\nkey: '+key)
    print('value: '+value)

结果如下:
在这里插入图片描述
倘若将键points的value值改为5,则上图代码会报错,
在这里插入图片描述
原因是因为不用的value值可能出现不同的数据类型,因此,value值一般写成字符或者字符串型。
5、 嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。正如下面的示例将演示的,嵌套是一项强大的功能。
1)字典列表
在这里插入图片描述
随机生成10个学生的姓名和年龄在列表中,但是这些同学的姓名和年龄是相同的,因此简单的加些判断语句来更改一下信息,让前五个人的名字和后五个名字不同,每个人年龄随机生成,代码如下:

import random
#创建一个用于存储学生信息的空列表
stus = []
#创建10个学生
for stu in range(0,10):
    stu={'name':'Wang Yang','age':25}
    stus.append(stu)
    for stu in stus[0:5]:
        if stu['name']=='Wang Yang':
            stu['name']='Liu Na'
            stu['age']==25
            stu['age']=random.randint(1,30)
    for stu in stus[5:10]:
        if stu['name']=='Wang Yang':
            stu['name']='Han Lin'
            stu['age']==25
            stu['age']=random.randint(1,30)
    print(stu)
print('Total number of stus: '+str(len(stus)))

结果如下:
在这里插入图片描述
2) 在字典中储存列表
有时候,需要将列表存储在字典中,比如存储一个人的电话,倘若每个人至少有一个电话,首先先构造一个字典stus,其中key值是姓名value值是电话,电话用可有多个,故而将电话构成一个列表。代码如下:

stus={'Li lin':['125','175','170',],
      'Wang peng':['123','178','165',],
      'Zhang xin':['121','170',],}
for name,iphones in stus.items():
    print(name.title()+' '+'iphones are:')
    for iphone in iphones:
        print(iphone)

在这里插入图片描述
注意,列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单的解决问题的方案。
3) 在字典中存储字典
上例中是把电话号码当做一个列表来储存,而日常生活中我们需要储存一个用户的信息,比如说姓名,年龄,身高体重等,就可以使用字典中嵌套字典,如下例中:先创建一个字典users,其中有三个key,分别为三个名字,其中每个人的信息当做每个人名所对应的value值,最后将每个人的信息嵌套起来,每个人的信息都又有三个key值,年龄,身高,体重,然后不同的key值对应其value值。代码如下:

users={'Li lin':{'age':'25','height':'175','weight':'70'},
      'Wang peng':{'age':'23','height':'178','weight':'65'},
      'Zhang xin':{'age':'21','height':'170','weight':'60'}}
for name,info in users.items():
    print(name.title()+' '+'message are:')
    print('\tAge:'+info['age']+'years')
    print('\tHeight:'+info['height']+'cm')
    print('\tWeight:'+info['weight']+'kg')

结果如下:
在这里插入图片描述
今天分享就到这啦,特殊时期,大家尽量不要出门,祝大家身体健康,生活幸福!
参考博客:https://blog.youkuaiyun.com/zjxiaolu/article/details/44157743
Python生成随机: https://blog.youkuaiyun.com/qq_32618817/article/details/80583746
参考博客:https://blog.youkuaiyun.com/weixin_42423311/article/details/84640574

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值