首页 > 编程语言 >python3-基础篇-09-字典

python3-基础篇-09-字典

时间:2022-11-17 16:00:47浏览次数:46  
标签:12 name age 09 dict key print python3 字典


 字典的特点:

1.无序的

2.key唯一

ps:类似于java中的map

一、字典创建

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

1. _dict={key:value} (常用)

2. _dict=dict(((key,value),))

_dict1 ={"name":"lvyq","age":12}
_dict2=dict((("name","lvyq"),("age",12),))
print(type(_dict1),_dict1)
print(type(_dict2),_dict2)

python3-基础篇-09-字典_键值对

二、字典操作

1.查询 ,通过key查询

1.value=_dict['key']

2.value = _dict.get('key')

_dict = {'name':'lvyq','age':12}
name = _dict['name']
age = _dict.get('age')
print(name)
print(age)

python3-基础篇-09-字典_类型转换_02

运行结果

lvyq

12

其它方法

方法

说明

_dict.keys()

获取所有键,在python3中,并非列表类型,是一个dict_keys类型,这是python3做的优化,使用的话需要使用类型转换

_dict.values()

获取所有值

_dict.items()

获取所有的键值对

_dict = {'name':'lvyq','age':12}
#查询所有键 keys() dict_keys 并非列表类型 ,是一个dict_keys类型,需要用list转换。python3做的优化
print("获取的值:{},对应的类型:{},转换成列表后:".format(_dict.keys(),type(_dict.keys())),list(_dict.keys()))
print("获取的值:{},对应的类型:{},转换成元组后:".format(_dict.values(),type(_dict.values())),tuple(_dict.values()))
print("获取的值:{},对应的类型:{},转换成字典后:".format(_dict.items(),type(_dict.items())),dict(_dict.items()))

python3-基础篇-09-字典_python_03

运行结果

python3-基础篇-09-字典_键值对_04

python3-基础篇-09-字典_类型转换_05编辑

2.修改

2.添加

1. _dict('key')='值' 

 当key在字典中存在时,则会更新,不存在时,则往字典中添加相应的键值对

_dict = {'name':'lvyq','age':12}
print("原始值:%s"%_dict)
_dict['age']=22
print("修改后:%s"%_dict)
_dict['job']='IT'
print("修改后:%s"%_dict)

python3-基础篇-09-字典_类型转换_06

运行结果

原始值:{'name': 'lvyq', 'age': 12}
修改后:{'name': 'lvyq', 'age': 22}
修改后:{'name': 'lvyq', 'age': 22, 'job': 'IT'}

2

setdefault('key','值')

与上面不同的是当key在字典中存在时,则不会更新,同时会返回所要添加的key所对应的值,不存在,则添加并返回所添加的键值对对应的值

_dict = {'name':'lvyq','age':12}
print("新增前:%s"%_dict)
_set_vauel=_dict.setdefault('age',62)
print("修改后:{},修改的值为:{}".format(_dict,_set_vauel))
_set_vauel=_dict.setdefault('job','IT')
print("修改后:{},修改的值为:{}".format(_dict,_set_vauel))

python3-基础篇-09-字典_python_07

运行结果

新增前:{'name': 'lvyq', 'age': 12}
修改后:{'name': 'lvyq', 'age': 12},修改的值为:12
修改后:{'name': 'lvyq', 'age': 12, 'job': 'IT'},修改的值为:IT

3.修改

1.使用_dict['key']的方式,可以修改值。(上面已经提到了)

2.update() ,将_dict2的值更新到_dict中,当两个字典中存在相同的key时,则后面字典中key对应的值更新至前面字典中key所对应的值

_dict.update(_dict2)

_dict = {'name':'lvyq','age':12}
print("_dict的值:%s"%_dict)
_dict2={'name':'小明','job':'IT'}
print("_dict2的值:%s"%_dict2)
_dict.update(_dict2)
print("更新后_dict的值:%s"%_dict)

python3-基础篇-09-字典_类型转换_08

运行结果

_dict的值:{'name': 'lvyq', 'age': 12}
_dict2的值:{'name': '小明', 'job': 'IT'}
更新后_dict的值:{'name': '小明', 'age': 12, 'job': 'IT'}

4.删除

1.del _dict['key']  通过键删除键值对

2._dict.pop('key') 通过键删除,并返回对应的值

3._dict.clear() 清空

4._dict.popitem() 随机删除某组键值对(基本不用)

_dict = {'name':'lvyq','age':12,'Job':'IT'}
#根据键删除键值对
del _dict['name']
print("del 删除后结果:%s"%_dict)
#删除,并返回该键值对的值
age =_dict.pop('age')
print("删除age后:{},删除key对应的值{}".format(_dict,age))
#清空
_dict.clear()
print(_dict)

python3-基础篇-09-字典_类型转换_09

运行结果

del 删除后结果:{'age': 12, 'Job': 'IT'}
删除age后:{'Job': 'IT'},删除key对应的值12
{}

                                                               其它

字典的创建除了上面提到的两种,还可以使用fromkeys()创建

dict.fromkeys(seq,'value')

创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值

_dict=dict.fromkeys(['one','two','three'],'value')
_dict2=dict.fromkeys('ABC','value')
_dict3=dict.fromkeys(['one','two','three'],[1,2])
print(_dict)
print(_dict2)
print(_dict3)

python3-基础篇-09-字典_类型转换_10

运行结算

{'one': 'value', 'two': 'value', 'three': 'value'}
{'A': 'value', 'B': 'value', 'C': 'value'}
{'one': [1, 2], 'two': [1, 2], 'three': [1, 2]}

二、字典遍历

_dict = {'name':'lvyq','age':12}
for i in _dict:
print("遍历1",i,dict[i])
for i,v in _dict.items():
print("遍历2",i,v)

python3-基础篇-09-字典_类型转换_11

推荐使用第一种,第一种效率相对较高,第二种中间存在了数据类型转换的过程


标签:12,name,age,09,dict,key,print,python3,字典
From: https://blog.51cto.com/lvyq/5860859

相关文章

  • Codeforces Gym 100958 E Cellular Automaton (Makoto rng_58 Soejima contest) 题解
    题目链接其实"序列中1的数量有限"是一个非常重要的条件。这意味着我们可以找到序列中的第一个1和最后一个1。考虑这样一件事情:初始时我们把一个长度为\(2^{2w+1}\)的"滑......
  • Oracle常用数据字典表
      Oracle常用数据字典表   查看当前用户的缺省表空间SQL>selectusername,default_tablespacefromuser_users; 查看当前用户的......
  • 09_Kafka入门_数据日志分离
    关闭kafka但是会有延时,关闭的比较慢。之后再看一下就没了,需要等待一下。我们删除每台机器的logs文件夹:我们希望把数据和logs分开来放。这时候,就相当于kafka新装的一样......
  • Citrix Linux VDA 2209的全文解析
    本文翻译自TerryHou的BestpracticestoensureyouhavetheCitrixLinuxVDAsupportyouneed。随着最近CVAD2209和CitrixLinuxVDA2209的发布,CitrixLinuxVDA现在......
  • Netty源码-09-ServerBootstrapAcceptor
    在ServerBootstrapAcceptor启用之前,此刻Reactor状态应该是NioServerSocketChannel在IO多路复用器上关注着Accept(16)事件pipeline中有4个handlerheadbossHandlerSer......
  • P4054 [JSOI2009] 计数问题
    传送门二维树状数组板子题(大概?)只要再多开一维\(c\)来存储该点的权值就可以了。这里的树状数组\(a[i][j][c]\)表示以第\(i\)行,第\(j\)列为右下角,权值为\(c\)的点......
  • python 字典的不同取值方法
    如果使用get(key)的方法取值,不存在的键胡返回空值d={"first":1}print(d.get("first"))print(d.get("second"))结果:1None但是如果直接取值,不存在的则会报错print(d["fir......
  • 查看MySQL数据库所有的表名、表注释、字段名称、类型、长度、备注,一键导出生成数据库
    一、先了解下INFORMATION_SCHEMA1、在MySQL中,把INFORMATION_SCHEMA看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据......
  • AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
    AttributeError:module'lib'hasnoattribute'X509_V_FLAG_CB_ISSUER_CHECK'以往这种报错解决记录觉得毫无意义,不过鉴于我问题解决比较奇葩,还是记录一下问题起......
  • 2022年09月23日-2022年09月25日 南京
    这次宝宝来南京首要的大事就是来确定婚纱照的事宜,早餐我们吃了我楼下的早餐店的饼子,宝宝说特别好吃,以后都要吃这个。行啊下次来再给你买呗,中午我们去了韩国艺匠,宝宝看了他......