Python字典的初识、增删改查及嵌套
为什么要有字典?
列表可以存储大量的数据,但数据间的关联型不强
列表的查询速度相对慢dict:字典,容器型数据类型
数据类型的分类:
- 可变与不可变
- 可变(不可哈希)的数据类型:
列表list,字典dict,集合set - 不可变(可哈希)的数据类型:
str,bool,int,tuple
字典的特点:
{}括起来,以键值对形式存储的容器型数据类型
例:dic = {'诗人':{'name':'李白','苏轼','杜甫','白居易'},
'age':[123,'七十八','五十',66]}
键必须是不可变的数据类型
值可以是任意数据类型,包括对象。
字典在3.5版本之前(包括3.5)是无序的
字典在3.6版本会按照初次建立字典的顺序排列,在学术上不认为是有序的
字典在3.7以后都是有序的。
字典的优点:
- 查询速度非常快,存储关联型的数据。
字典的缺点:
- 以空间换时间
字典的创建方式:
- 方式一:
dic = dict((('one',1),('two',2),('three',3)))
print(dic) # {'one': 1, 'two': 2, 'three': 3} - 方式二:
dic = dict(one=1,two=2,three=3)
print(dic) # {'one': 1, 'two': 2, 'three': 3} - 方式三:
dic = ({'one':1,'two':2,"three":3})
验证字典的合法性:
- 只能通过键找到值,不能通过值找到键,键在同一字典内必须要唯一
- 字典的键必须是不可变的(可哈希)数据类型
值可以存放任意数据类型
字典的增删改查:
增:
方式一:键已存在则修改,不存在则在字典末尾追加之
字典['键'] = 值方式二:键已存在则不变,不存在则增加
字典.setdefault('键') # 添加一个值为空的键
字典.setdefault('键',值) # 添加一个键值对
删:
pop:按照键删除
- 字典.pop('键') #有返回值,返回的是键里面的值
若要删除键不存在字典中,会报错,可以给键后面增加一个参数
字典.pop('键','没有此键') # 这样不会报错clear:清空
dict.clear():清空字典内的数据,字典本身还存在del:按照键删除
del dic['key']若键不存在则会报错
改:
dic['key'] = '新值'
查:
- 方式一:直接打印键值
print(dic['key'])
若键不存在则会报错 - 方式二:get
li = dic.get('key','自定义的返回值')
print(li)
若键不存在则显示为none - 还有三个特殊方法
- keys():所有的键
print(dic.keys()):
将所有的键放进一个特殊的数据类型,dict_keys
可以转换成列表
print(list(dic.keys()))
- keys():所有的键
for key in dic.keys():
print(key)
# 打印字典的每个键
values():所有的值
print(dic.values()):打印所有的值
可以转换成列表:print(list(dic.values()))
for values in dic.values():
print(values)
# 打印字典的每个值
items():所有的键值对
print(dic.items()):将所有的键值对以元组的形式放进一个特殊的数据类型中for i in dic.items():
print(i)
# i 为每个元组
利用元组的拆包分别赋值:
for key,value in dic.items():
print(key,value)
# key,value:两个变量分别对应键和值
字典的嵌套:
dic = {
'name':'汪峰',
'age':48,
'wife':[{'name':'国际章','age':38}]
'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}
# 1.取出汪峰的名字。
dic.get('name')
# 2.获取这个字典:{'name':'国际章','age':38}
dic.get('wife')
# 3.获取wife的名字。
dic["wife"].get('name')
# 4.获取girl_second的名字
dic['children'].get('girl_second')
Python字典的初识、增删改查及嵌套的更多相关文章
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- Python列表的增删改查排嵌套特殊输出格式
Python列表的增删改查排嵌套特殊输出格式 一.列表的样子: a = ['q' , 'w' , 'e ', 'r','t'] a为列表名,[ ]为列表内容,' '为列表内的元素,'q'为a[0] 二 ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- python之路day05--字典的增删改查,嵌套
字典dic 数据类型划分:可变数据类型,不可变数据类型 不可变数据类型:元组,bool,int str -->可哈希可变数据类型:list,dict,set --> 不可哈希 dict k ...
- python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套
列表增删改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', ...
- python学习(list增删改查、及常用方法)
1.Python多条件判断: 多条件判断if: passelse: pass循环 while for i = 0 while i > 1: print('hello') else: print( ...
- Python之注册表增删改查(干货)
在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...
- Python实现mysql数据库增删改查
利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装! 1. 环境配置 安装第三方包 ,导入模块 mysql.connector pip inst ...
- python列表的增删改查和嵌套
列表 python常用的数据类型 可承载任意的数据类型 列表是有序的,可索引.切片(步长) 列表的创建 list1 = [1, 2, 'whll'] #1. list2 = list() #2. #3 ...
随机推荐
- python守护线程t.setDaemon(True)
守护线程是守护主线程 t.setDaemon(True),调用函数里面存在等待时间时,只要设置了守护线程,函数中等待时间下面的代码都不会再执行
- Java基础语法(10)-面向对象之三大特征
title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...
- 再见了SpringMVC!这个框架有点厉害,甚至干掉了Servlet!
# 前言 对 Java 开发者来说, Spring 发布 5.0 正式版,而新版 Spring 的一大特色,就是 Reactive Web 方案 Web Flux,这是用来替代 Spring Web ...
- linux学习(十)linux安装MySQL
一.前言 由于我使用的是阿里云的服务器,后面会加入配置阿里云的部分,非阿里云的linux系统可以省略后面的步骤,根据自己系统的情况进行配置~ PS:我安装的是mysql5.7.24的版本,其他版本的M ...
- TP6 数据库管理工具,生成前后台CRUD页面
Tp6 数据库管理工具,数据库内容的搬运工 支持MySQL数据库,可视化配置直接生成前后台CRUD页面减少重复劳动,可以直接作为后台页面使用.前端页面技术基于 iszsw/surface 支持多表关联 ...
- Python爬虫之反爬虫---使用随机User-Agent
在编写爬虫时,大多数情况下,需要设置请求头.而在请求头中,随机更换User-Agent可以避免触发相应的反爬机制. 使用第三方库fake-useragent便可轻松生成随机User-Agent. 使用 ...
- RabbitMQ 3.6.12延迟队列简单示例
简介 延迟队列存储的消息是不希望被消费者立刻拿到的,而是等待特定时间后,消费者才能拿到这个消息进行消费.使用场景比较多,例如订单限时30分钟内支付,否则取消,再如分布式环境中每隔一段时间重复执行某操作 ...
- Centos-显示开机信息-dmesg
dmesg 显示开机信息,开机时内核将开机信息存储在系统缓冲区(ring buffer)中,存储在 /var/log/dmesg文件中
- 《RESTful Web APIs》书中有一段POST API示例,现实中我们如何测试这个示例?书中没有说,Let's try it!
<RESTful Web APIs>书中有一段POST API示例: I then send the filled-out template as part of an HTTP POST ...
- 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...