day-05-字典
字典的初识
- why:
 - 列表可以存储大量的数据,但数据之间的关联性不强
 - 列表的查询速度比较慢。数量越大查询越慢
 - what:容器型数据类型:dict
 - how:
 - 数据类型的分类(可变与不可变)
- 可变(不可哈希)的数据类型:list dict set
 - 不可变(可哈吉)的数据类型:str bool int tuple (对原对象本身不可变)
 
 - 字典:{}括起来,以键值对形式存储的容器型数据类型:
dic = {
'小明':
{'name': '小明', 'age': 18, 'sex': '男'},
'名单':
['小红', '小猪', '小严']
} 键必须是不可变的数据类型:int,str, bool tuple(唯一的)不然后一个就会把前一个给覆盖
dic = {1: 'a', 1: 'b', 2: 'c'}
print(dic) # {1: 'b', 2: 'c'}值可以是任意数据类型,对象。
字典3.5版本之前包括3.5是 无序的。
- 字典在3.6会按照初次建立字典的顺序排列,学术上不认为是有序的。
 - 字典在3.7以后都是有序的。
 - 字典的优点:查询速度非常快,存储关联性的数据
 - 字典的缺点:以空间换时间。
 - 字典的创建方式:面试题说出创建字典的方法
- 方式一:
dic = dict((('one', 1), ('tow', 2), ('stree', 3)))
print(dic) # {'one': 1, 'tow': 2, 'stree': 3} - 方式二:
dic = dict(noe=1, tow=2, three=3)
print(dic) # {'noe': 1, 'tow': 2, 'three': 3} - 方式三:最正规的方式(官方)
dic = dict({'noe': 1, 'tow': 2, 'three': 3})
print(dic) # {'noe': 1, 'tow': 2, 'three': 3} 
 - 方式一:
 - 字典的合法性,键必须是不可变的
dic = {[1, 2]: 'ab', 1: 19}
print(dic) dic = {[1, 2]: 'ab', 1: 19}
TypeError: unhashable type: 'list' 
字典的使用(增删改查)
- 增:
- 直接增加,有则改之,无则增加
dic = {'name': '小明', 'age': 18} dic['sex'] = '男' # {'name': '小明', 'age': 18, 'sex': '男'}
dic['age'] = 23 # {'name': '小明', 'age': 23} - setdefault: 有则不变,无则增加
dic = {'name': '小明', 'age': 18} dic.setdefault('age', 45) # {'name': '小明', 'age': 18}
dic.setdefault('set', '男') # {'name': '小明', 'age': 18, 'sex': '男' 
 - 直接增加,有则改之,无则增加
 - 删除
- pop:按照键值去删除键值对,返回对应的值,并且将字典当中的键值对删除
dic = {'name': '小明', 'age': 18} dic.pop('age') # 字典删除后为{'name': '小明'} 并返回18
dic.pop('sex') # 没有此键就会报错
dic.pop('sex', '没有此键') # 设置第二个参数,无论字典中是否有此键值,返回第二个参数的内容 - clear:清空,内容清空
 - del:和pop一样但没有就报错,没有第二个参数,建议用pop
 
 - pop:按照键值去删除键值对,返回对应的值,并且将字典当中的键值对删除
 - 改
- 直接改:
dic = {'name': '小明', 'age': 18}
dic['age'] = 55
print(dic) # {'name': '小明', 'age': 55} 
 - 直接改:
 - 查
- get()
dic = {'name': '小明', 'age': 18} ll = dic.get('age') # 返回查询的值
ls = dic.get('sex', '没有此键') # 设置第二个参数,字典中没有此键值,返回第二个参数的内容
print(ll) # 18
print(ls) # 没有此键 - keys() values() items() 三个特殊的
dic = {'name': '小明', 'age': 18} print(dic.keys()) # dict_keys(['name', 'age'])
list(dic.keys()) # 转换成一个列表 - values() 和keys一致,加载所以的键放在一个特殊的数字类型里去,可以转化成列表,也可以直接for循环
 - items()以元组的形式返回所有的键值对,可for循环遍历
dic = {'name': '小明', 'age': 18} print(dic.items()) # dict_items([('name', '小明'), ('age', 18)])
#----------------------------------------- # 使用元组的拆包 for i in dic.items():
print(i) ('name', '小明')
('age', 18)
#---------------------------------------------
for key, value in dic.items():
print(key, value) name 小明
age 18 
 - get()
 - 相关题:
a = 11
b = 19
# 解:
a, b = b, a # 19, 11 
字典的嵌套
dic = {
    'name': '汪峰',
    'age': 48,
    'wife': [{'name': '国际章', 'age': 38}, ],
    'children': {'girl_first': '小苹果', 'girl_second': '小怡', 'girl_three': '顶顶'}
}
# 1. 获取汪峰的名字。
ll = dic.get('name')
print(ll)        # 汪峰
# 2.获取这个字典:{'name':'国际章','age':38}。
ll = dic.get('wife')[0]
print(ll)        # {'name': '国际章', 'age': 38}
# 3. 获取汪峰妻子的名字。
ll = dic.get('wife')[0].get('name')
print(ll)        # 国际章
# 4. 获取汪峰的第三个孩子名字。
ll = dic.get('children').get('girl_three')
print(ll)        # 顶顶
总结
字典:查询速度快,数据关联性强
键不可变的数据类型(str int),唯一
值:任意数据类型,对象
增删改查
字典的嵌套
day-05-字典的更多相关文章
- python学习05——字典
		
笨办法学python第39节 这节主要讲解的是字典,首先字典和列表的两个区别是: 1. 列表中可以通过数字找到列表中的元素,是数字作为索引的:字典中可以通过任何东西找到想要的元素,即字典可以将一个物件 ...
 - day 05字典相关内容
		
1.day 04内容回顾及作业讲解 列表:增 append insert extend 删 remove pop clear del 改 li[索引]='被修改的内容' li[切片]='被修改的内容' ...
 - python note 05 字典及其操作
		
1. '''#数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,bool int str 可哈希可变数据类型:list,dict set 不可哈希dict key 必须是不可变数据类型, ...
 - python --- 05      字典         集合
		
一.字典 可变数据类型 {key:value}形式 查找效率高 key值必须是不可变的数据类型 1.增删改查 1).增 dic["新key"] = "新va ...
 - python之路---05 字典 集合
		
二十.字典 可变数据类型 {key:value}形式 查找效率高 key值必须是不可变的数据类型 1.增删改查 1).增 dic["新key"] = "新v ...
 - day 05 字典,字典嵌套
		
字典: 1.列表如果存储大量数据,查询速度相对慢一些 2.列表存储的数据,一般没有什么关联性 针对以上原因,python提供了一个基础数据类型,dict 字典 数据类型的分类 : 容器型数据类型:li ...
 - python基础篇 05字典
		
本节主要内容:1. 字典的简单介绍2. 字典增删改查和其他操作3. 字典的嵌套 一. 字典的简单介绍:字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中 ...
 - python 05 字典
		
[TOC] 字典——dict { } 字典是无序,可变的数据类型. 字典:用于存储数据,存储大量数据,字典要比列表快:将数据和数据之间进行关联. 1. 定义: dic = {键:值,键:值} #每 ...
 - python 05—字典
		
一.字典的键是唯一的 键:简单对象,例[字符串.整数.浮点数.bool值] list不能作为键,但可以作为值. 例: score = { '萧峰' : 95, '段誉' : 97, '虚竹' : 89 ...
 - Python全栈开发第二期课表
		
day01-python 全栈开发-基础篇 01 开课介绍 01:55:13 ★ 02 开课介绍02 01:28:31 ★ 03 开课介绍03 00:22:55 ...
 
随机推荐
- Chrome & console.log & color & js
			
Chrome & console.log & color & js console.log & color // OK log(`%cchat_list =\n%c${ ...
 - nvm install node error
			
nvm install node error ➜ mini-program-all git:(master) nvm install 10.15.3 Downloading and installin ...
 - Xpath in JavaScript
			
test html <p>title</p> <ul class="list a" id="list"> <li> ...
 - Flutter: provider 使用小部件的小部件构建的依赖注入系统
			
文档 dependencies: provider: import 'package:dart_printf/dart_printf.dart'; import 'package:flutter/ma ...
 - 法兰西金融专访SPC空投重磅来袭
			
最近,法兰西金融日报联合德意志财经等知名金融媒体就SPC这一话题进行了专访. 法兰西金融日报记者德维尔斯问到,之前2020年的BGV项目等市场反响异常火爆,2021年已经来到,NGK目前有何新的大动作 ...
 - C++算法代码——笨小猴
			
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1163 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了 ...
 - SharedPreferences 数据传输中遇到的一些问题总结
			
原构想:MainActivity 设置两个按钮,btn1--跳转Main2Activity通过复选框组选择并提交,btn2--跳转Main3Activity通过RecycleView显示选择结果. 主 ...
 - Python爬虫_豆瓣电视剧
			
1 import requests 2 import json 3 import csv 4 5 6 class DoubantvSpider: 7 def __init__(self): 8 # s ...
 - Java开发工程师最新面试题库系列——Spring部分(附答案)
			
Spring Spring框架是什么? 答:Spring是轻量级的面向切面和控制反转的框架.初代版本为2002年发布的interface21,Spring框架是为了解决企业级应用开发的复杂性的出现的, ...
 - UML类图介绍&类的六大关系
			
UML类图介绍&类的六大关系 官方定义 UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的方式 UML 图形化的语言 基本介绍 UML图: ...