Python基础知识(四)------字典

字典

一丶什么是字典

​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔

​ 键: 必须是可哈希,(不可变的数据类型),必须是唯一的

​ 值: 任意数据类型

特点:

​ 查询的效率非常高,通过key来查找元素 #典型的空间换时间的案例: 虽然查询速度高效,但是占内存大

​ 内部使用key来计算一个内存地址(暂时), hash算法,key必须是不可变的数据类型(key 必须是可哈希的数据类型),key必须是不可变的数据类型

​ 字典是无序的, python3.6版本以上,默认定义顺序,3.5以下随机显示

二丶字典的使用

####增
#setdefault('键名','值')
#两个含义:
#1.如果key不存在就执行新增. 新增时:没有给值,默认None 如 dic.setdefault('a') --->> {'b': 2, 'c': 4, 'a': None}
#2.如果key已经存在,就不在新增,就执行查询
dic.setdefault('键名','值') #添加键值
dic['键名']='值' ####删
#pop 通过键,删除,返回被删除的键锁对应的值
dic.pop('键名') #popitem() 随机删除
dic.popitem() #del dic[键名] #指定的键值对
del dic['键名'] #del 删除整个字典
del dic # ---> 删除的是内存地址 #clear() 清空字典
dic.clear() ####改
#直接修改
dic['key']='新值' #update() 替换修改
dic.update({'键名':'新值'}) #括号内的字典优先级高 ####查
#直接查询
dic('键') #setdefault('键名') 前提是键已存在的情况,执行查询,
dic.setdefault('键名') #get('键名','返回的内容')键存在,返回对应的值. 键不存在, 默认返回的None,若指定提示内容,则返回提示内容
dic.get('键名','键不存在,返回的内容') #####字典的使用
#for 循环字典 ,获取所有的键
for i in dic:
print(i) #dic.keys()
# 获取所有的keys 高仿列表,但是没有索引,可迭代.可以根据keys获取值
a={'a':'1',"b":'2'}
print(a.keys()) for i in dic.keys():
print(dic[i]) #dic.values()
# 获取所有的values,没有索引,可迭代
a={'a':'1',"b":'2'}
print(a.values()) for i in dic.values():
print(i) #dic.items()
#获取字典汇中的键值对,以元组形式.
a={'a':'1',"b":'2'}
print(a.items()) # dict_items([('a', '1'), ('b', '2')]) for i in dic.items()
print(i) #-->('a', '1')
print(type(i)) #<class 'tuple'> ####解构
#字典 元组 列表 ,字符串 可迭代的都能解构
a,b,c=(a1,b1,c1) # 必须一一对应
a,b={ # 解构的是字典的key
"a":1,
"b":2,
} #字典的结构
a={'a':'1',"b":'2'}
for k,v in a.itmes():
print(k,v) # --->k 对应键, v 对应值 ####枚举 enumerate(可迭代对象,索引) 同时列出数据和数据下标 a={'a':'1',"b":'2'}
for i,k enumerate(a,1) #第二个参数,默认从0开始
print(i,k) # --- i 是索引, k是键名

额外: enumerate() 函数 得到是一个 迭代器 ,含有__iter__ 和__next__方法

三丶字典的嵌套

goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
] #取出美女
print(good[3]['name'])

四丶字典的作用

​ 1.字典是存储大量的数据,字典比列表还大

​ 2.字典的查找值的时候,方便快捷,快速

​ 3.字典能够将数据进行关联

​ 4.字典消耗内存大,常用的数据类型:字符串,列表和字典

​ ###字典的转换需要借助 json 模块

五丶字典和列表测试题

#文件读取内容,保存成字典格式的数据,并添加到列表中
cars = ['鲁A32444','鲁B12333','京B8989M','⿊C49678','⿊C46555','沪B25044','冀G11111']
locals = {'冀':'河北', '⿊':'⿊⻰江', '鲁':'⼭东', '鄂':'湖北', '湘':'湖南','京':'北京'}
#方式一
dic={}
for p in locals:
count=0
for carId in cars:
if carId.startswith(p):
count+=1
if count!=0:
dic[locals[p]]=count
print(dic) #方式二
dic = {}
for el in cars: # 循环列表元素
for key in locals: # 循环字典的key
if el[0] in key: #判断每个列表元素的下标索引是0 ,是否在字典的key中存在
#把locals中el[0]每个元素对应的值作为键名 #从字典中获取,如果不存在就返回0,存在就返回1
dic[locals.get(el[0])]=dic.get(locals[el[0]],0)+1
print(locals.get(el[0])) #
print('mihuo',dic.get(locals[el[0]],0))
print(dic)

Python基础知识(五)------字典的更多相关文章

  1. python基础知识五

    数据结构基本上就是---它们可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python中有三种内建的数据结构---列表.元祖和字典. 我们将会学习如何使用它们,以及它们如何使编程变得 ...

  2. Python基础知识:字典

    1.字典中键-值为一对,keys()返回一个列表,包含字典中所有键,values()返回所有值 favorite_languages ={ 'jack':"python", 'al ...

  3. python 基础知识4 - 字典

    1.字典增 #字典增 dic = {'name': '大白', 'age': 20} dic['hight'] = 180 #没有键值对,添加 dic['age'] = 18 #有键值对,覆盖 pri ...

  4. python基础知识五 各类型数据方法补充,转换,分类,编码+坑中菜

    3.9各类型数据方法补充,转换,分类,编码,坑中菜 3.9.1数据类型方法补充 1.str:不可变 补充方法 s1.capitalize():首字母大写 s1 = "alex" s ...

  5. python基础知识三 字典-dict + 菜中菜

    3.7字典:dict+菜中菜 1.简介 ​ 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联 ​ 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu': ...

  6. python基础知识(字典)

    创建字典 变量名 = {key:value,.....} zip()    转换为zip对象 空字典 变量名 = {} 变量名 = dict(key = value,....) 创建只有键的字典 fr ...

  7. Python基础知识(五)

    # -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...

  8. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  9. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

随机推荐

  1. React 版本16.9.0 中配置路由以及路由传参

    我的脚手架版本如下: "dependencies": { "antd": "^3.21.4", "jquery": &q ...

  2. asp.net core 使用 Serilog

    安装NuGet包 PM> Install-Package SerilogPM> Install-Package Serilog.AspNetCorePM> Install-Packa ...

  3. CentOS7.6 X64搭建mysql服务

    1.官方安装文档 http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 2.下载 Mysql yum包 http://dev.mysql.co ...

  4. windows如何删除服务

    有时候软件被安装成了服务,但是卸载后如何删除无效的服务,这时候就不是普通用户就能删除了,这属于操作系统管理级别了,需要使用管理命令了. 管理员权限打开cmd,执行如下: C:\Windows\syst ...

  5. tensorflow keras analysis

    目录 Q: where is Sequential defined? Q: where is compile()? tensorflow keras analysis code from keras. ...

  6. 由swap引出的局部变量,形参和指针的小问题

    1.第一种实现swap函数的方法是: swap(int a,int b) { Int c = a;a = b;b =c; } 这表面一看确实是实现了整数a,b的交换,当拿来用时发现,结果并不是我们想要 ...

  7. 【SpringBoot】SpringBoot配置与单元测试(二)

    SpringBoot项目创建参考[SpringBoot]SpringBoot快速入门(一) 本文介绍SpringBoot项目的POM文件.配置与单元测试 POM文件 1.SpringBoot的pom文 ...

  8. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案使用过程中问题的自我排查-设备不在线问题自我排查检测

    由于EasyNVR的受众越来越多,时常会遇到很多类似的问题咨询,之前虽然有写过很多的博文进行技术的或者使用问题的解答,随着客户询问的增多,我发现,要想让客户了解问题和解决问题,往往引导和给一个思路比直 ...

  9. oracle 通用事务使用

    private void dothing() { OracleConnection con = DBHelperOracle.init(); OracleTransaction tran = con. ...

  10. 记事本 该文件含有unicode格式的字符 点确定就变乱码了,notePad++,UltraEditor等编辑器打开也变乱码?

    --问题 之前一直都是好的 今天电脑打开,发现电脑所有的TXT记事本,点开来全是乱码,甚至下过来的TXT,或者自己新建的TXT,打上中文字,点保存会弹出 该文件含有unicode格式的字符什么什么的, ...