列表形式输出字典的键与值_Python入门15字典dict

512076e292a8f40e345f3ee58ba82f2b.gif

dictionary,字典,是一种可变容器模式。在某些语言中称为map。

字典也称为关联数组或哈希表。

字典使用-值(key-value)存储,具有极快的查找速度。字典和列表不同,字典里的对象是无序的,是通过一对对的键和值来反映一种映射关系。

在每个键值对中,键和值用冒号分隔,键值对之间用逗号分隔,整个字典包括在大括号中

键必须是唯一的,不允许同一键出现两次;(在创建时如果同一个键被创建两次,则后一个会覆盖前一个)。值可以不唯一。

创建字典以及访问字典里的值

假设要根据同学的名字查找对应的成绩,如果用list 实现,需要两个list :names =[' 小明', ' 小华', ' 小强']scores =[95, 75, 85] 给定一个名字,要查找对应的成绩,就先要在names 中找到对应的位置,再从scores 取出对应的成绩,list 越长,耗时越长。 如果用dict 实现,只需要一个“名字”- “成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。 【

#由空字典填充新的键和值

d={}

d['name']='Runoob'

d['url']='www.runoob.com'

print(d)

721b71711ac829e35fdea5e1f3b92d21.png

【例】直接创建字典

w={'name':'Runoob','url':'www.runoob.com'}#创建字典

print(f'{w["name"]}: {w["url"]}')#访问指定键,输出对应的值

e489b67d5f82fa77ffa9155de983773d.png

【例】由列表生成字典,用dict()函数和zip()函数

#由列表生成字典

key_list=['小明','小华','小强']

value_list=[95,75,85]

dic=dict(zip(key_list,value_list))#映射函数方式来构造字典

print(dic)

e486b881f00779ee783d966eebabb6b2.png

【例】字典的值可以是任何Python对象,例如字符串、数字、元组等

dic={'小明':95,'小华':75,'小强':85,"小张":{100,99},"小王":[97,98]}#值可以是元组、列表等

print(f"小张的成绩是:{dic['小张']}")

print(f"小王的成绩是:{dic['小王']}")

648837156e196f127475dbe4205b8677.png

但是,字典的键必须是不可变对象,即可以用数字、字符串或元组充当,但是不可以用列表、集合

dic={('小明'):95,'小华':75,'小强':85}#键可以是元组,因为元组是不可变类型

print(dic['小明'])

运行结果:

95

dic={('小明','小周'):95,'小华':75,'小强': 85}#键可以是元组,因为元组是不可变类型

print(dic['小明','小周'])#此行这样写也对:print(dic[('小明','小周')])

运行结果:

95

以下是错误的:

dic={['小明']:95,'小华':75,'小强':85}#错。键不可以是列表

1075fb5780e73b9b41a29ec7418fb1a0.png

获取指定键值

【例】get()方法获取指定键对应的值

dic={'Name':'Runoob','Age':27}

print("Age 值为 : %s"% dic.get('Age'))#此处也可以用dic['Age']

print("Sex 值为 : %s"% dic.get('Sex',"不存在"))#如果不存在该键,则返回"不存在"

d1f3beded00008b97ae567eaec17a3ba.png

以下程序运行结果同上:

dic={'Name':'Runoob','Age':27}

print("Age 值为 : %s"% dic.get('Age'))#此处也可以用dic['Age']

if dic.get('Sex')==None: #get()方法获取不到键则返回None

print("%s 值为 :不存在"%'Sex')

dic={'小明':95,'小华':75,'小强': 85}#创建字典,'小明''小华''小强'是键key,95、75、85是对应的值value

name=input("请输入你要查询的姓名:")

print(f"{name}的成绩是:{dic[name]}")#根据键访问对应的值,键用方括号括起来

print(f"{name}的成绩是:{dic.get(name)}")#利用get()方法根据键访问对应的值

print("%s的成绩是:%d"%(name,dic[name]))#另一种格式化输出

print("%s的成绩是:%d"%(name,dic.get(name)))#另一种格式化输出

ec03a76819c086ed9c54bb5c34d3af67.png

dic={'小明':95,'小华':75,'小强':85}#创建字典,'小明''小华''小强'是键key,95、75、85是对应的值value

name=input("请输入你要查询的姓名:")

if dic.get(name)!=None:#get()方法获取不到键则返回None

    print(f"{name}的成绩是:{dic[name]}")#根据键访问对应的值,键用方括号括起来

else:

print("你输入的姓名不存在")

e70b11d47d9b6591f048cdf053a53e58.png

修改字典

【例】d[键]=值

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

dic['Age']=18#更新'Age'对应的值

dic['School']='实验初中'#增加新的键/值对

dic['School']='泗阳中专'#更新值

print("dic['Age']:",dic['Age'])

print("dic['School']:",dic['School'])

8817481404b6063b720e6da6bc7f1f51.png

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

dic['团员']=True  #赋值时,不存在的会自动添加

print(dic)

0fbb538417af1a76fd5662d050ab7709.png

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

print(dic.setdefault('Age'))#setdefault()方法得到指定键对应的值

print(dic.setdefault('department',"综合部"))#setdefault()方法,如果不存在则创建之,返回添加的值

print(dic.setdefault('团员',True))

print(dic)

0409a65f5a876e7fc1e2d1ce1d7a4fae.png

注:低版本的Python打印出的字典顺序和创建时的顺序可能不相同,3.6以后新版本的相同

获取字典里的所有键/值对、键、值

【例】keys()方法获得键

#遍历键

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

for key in dic.keys():

print(key)

4e717b0fd75889f61b6d4222c7751b4e.png

【例】values()方法获得值

#遍历值

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

for value in dic.values():

    print(value)

e9501ace240249619e264b988ccd17e7.png

【例】items()方法获得字典元素(键/值对)

#遍历字典中的元素(键值对)

#每对键值组成一个元组

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

for item in dic.items():

    print(item)

0576ec6824398e4dd1f1a4ca2ea70f70.png

【例】items()方法获得键/值对

#遍历字典中的元素(键值对)

#以key=……,value=……的格式输出

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

for key,value in dic.items():

   print(f"key={key},value={value}")

e021310e7303a8ce4b4ebe25163815dc.png

【例】items()方法获得键/值对,keys()方法获得键,values()方法获得值

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

print(dic)#输出原字典

for key,value in dic.items():#输出键/值对

   print(key,value)

print('\n')

print(dic.items())#用items()方法把每对键值组成一个元组放在列表中返回

list1=[k+'='+str(v) for k,vin dic.items()]#由字典的键/值对生成一个列表

print(list1)#输出生成的列表

print(dic.keys())#以列表形式返回所有键

list2=[k for k in dic.keys()]#由字典的键生成一个列表

print(list2)

print(dic.values())#以列表形式返回所有值

list3=[v for v in dic.values()]#由字典的值生成一个列表

print(list3)

f2e53d23a625c466e0ef3ef34bfef8de.png

删除字典中的元素

方法一,用pop()方法

【例】用pop(key)方法删除指定key对应的键/值对,该方法返回被删除的值value

dic={'Name':'王海','Age':17,'Class':'计算机一班','weight':68}

print(dic)#输出原字典

del_key=input('请输入你要删除的键:')

print(f"你删除的键是:{del_key},对应删除的值是:{dic.pop(del_key)}")#用pop()方法删除键值对并返回被删除的值

print("删除后:\n",dic)

0d5f3232b7a07ac69b600e0b592ebd4d.png

方法二,用del语句

【例】

dic={'Name':'王海','Age':17,'Class':'计算机一班','weight':68}

print(dic)#输出原字典

del dic['weight']#删除一个键/值对

for key,value in dic.items():#

    print(key,value)

print(dic.items())#用items()方法输出所有键/值对

del dic#删除整个字典

99d3d5792004a6ac8f09e5c45ab96a27.png

del dic#删除字典,字典就不存在了

另有:dic.clear()#清空字典(删除字典内所有元素),得到空字典。

判断某键是否在字典里

使用in运算。对于Value不适用。

【例】

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

print('Age' in dic)

运行结果:

True

注:Python3中取消了判断是否有某键的has_key()方法print(dic.has_key('Age'))

直接赋值和copy的区别

【例】使用=拷贝和使用copy()拷贝不一样。

dic1={'Name':'王海','Age':17,'Class':'计算机一班','score':[190,120,40]}

dic2=dic1#浅拷贝:引用对象,同步变化

dic3=dic1.copy()#深拷贝父对象,浅拷贝子对象(二级目录)

dic1['Name']='刘德华'#修改

dic1['score'].remove(40)#删除内嵌列表中的40

print(dic1)

print(dic2)#dic2是浅拷贝,所以跟随原dic1同步变化

print(dic3)#dic3由copy()拷贝而来,父对象深拷贝,不和原字典同步;子对象浅拷贝,跟随原dic1同步变化

63077841c9eecf53e6acf192f2f06886.png

一些相关函数

用len()函数统计字典元素的个数,即键的个数

dic={'Name':'王海','Age':17,'Class':'计算机一班'}

print(len(dic))#字典名字放在len的括号中

运行结果:

3

5ec667ba8758fec98e97c1c4fa6946c6.png

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值