Python:字典类型
概念
无序的,可变的,键值对集合
定义
方式1
{key1: value1, key2: value2, ......}
方式2
fromkeys(S, v=None)
- 静态方法:类和对象都可以调用
- 类调用:dict.fromkeys("xxx", "yyy"),此处的dict指的是字典类型
- 对象调用:dic.fromkeys("xxx", "yyy"),此处的dic指的是实例化的字典对象
注意
- key不能重复,如果重复,后面的会把前面的覆盖
- key必须是任意不可变类型
不可变的原因:
- python的字典,采用哈希的方式实现
- 简单存储过程:
- 初始化一个表格,用来存放所有的值
- 表格可以称为哈希表
- 存储一个键值对的时候,会做如下操作
- 根据给定的key,通过某些操作,得到一个在哈希表中的索引位置
- 把key通过“哈希函数”转换成一个整型数字,称为哈希值
- 将该数字对数组长度进行取余,取余结果当做下标
- 如果产生了“哈希冲突”
- 采用开放寻址法,通过探测函数查找下一个空位
- 根据索引位置,存储给定的“值”
- 根据给定的key,通过某些操作,得到一个在哈希表中的索引位置
- 初始化一个表格,用来存放所有的值
- 简单查找过程
- 再次使用哈希函数将key转换为对应的列表的索引,并定位到列表的位置获取响应的value
字典的意义
- 可以通过key,访问对应的值,使得这种访问更具意义
- 查询效率得到很大提升
常用操作
增加
dic[key] = value:当key不存在的时候,就是增加操作
删除
del dic[key]:删除一个字典元素dic.pop(key[, default]):删除指定键值对,返回删除的值,如果key不存在,则直接返回给定的default值,如果也没有给default,则报错dic.popitem():删除按升序排序后的第一个键值对,并以元组的形式返回该键值对,如果字典为空,则报错dic.clear():删除字典内所有键值对,返回None,只是内容被清空,字典本身还存在
修改
只能改值,不能改key
修改单个键值对:dic[key] = value
批量修改键值对:oldDic.update(newDic)
查找
获取单个值
dic[key]:如果key不存在,则报错dic.get(key[, default]):如果不存在则返回default,如果也没有default,返回None,但是原字典不会增加这个键值对dic.setdefault(key[, default]):如果key不存在,则设置指定的默认值,并返回该值,如果默认值没有指定,则使用None代替
获取所有值
dic.values()
获取所有的键
dic.keys()
获取所有的键值对
dic.items()
py3和py2的区别
python2中,上面几个直接是一个列表,可以通过下标进行获取指定元素
python3中,是Dictionary view objects
在python2中,还提供了viewkeys() viewvalues() viewitems(),作用相当于python3中的view objects
遍历
可以分别遍历键,值,键值对
也可以一起遍历:
for k,v in kvs:
......
in
in用在字典里,判断的是key
以前有一个方法:has_key(),来判断是否存在某个键值,现在已经不用了
Python:字典类型的更多相关文章
- [转载]关于python字典类型最疯狂的表达方式
一个Python字典表达式谜题 让我们探究一下下面这个晦涩的python字典表达式,以找出在python解释器的中未知的内部到底发生了什么. # 一个python谜题:这是一个秘密 # 这个表达式计算 ...
- python字典类型
字典类型简介 字典(dict)是存储key/value数据的容器,也就是所谓的map.hash.关联数组.无论是什么称呼,都是键值对存储的方式. 在python中,dict类型使用大括号包围: D = ...
- Python字典类型、
字典类型: # msg_dic = {# 'apple': 10,# 'tesla': 100000,# 'mac': 3000,# 'lenovo': 30000,# ...
- python中字典类型的使用
Python字典类型 字典是一种键值对的集合,键值对之间无序 字典类型的定义 采用{}或者dict()来创建字典对象,键值对之间使用:进行分隔. {<键1>:<值1>, < ...
- Python字典及相关操作(内含例题)
Python字典类型 今天将会介绍一种在python中十分常见的组合数据类型——字典 通过一些实例来理解字典中的常规操作 什么是字典类型? 列表中查找是通过整数的索引(元素在列表中的序号)来实现查找功 ...
- python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
- Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
#coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...
- python数据类型——字典类型
字典(dictionary) python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可 ...
- Python编程Day6——元组类型、字典类型、集合
一.元组类型(tuple) 1.用途:记录多个值,当多个值没有改变的需求此时元组更为合适 2.定义:在()内用逗号分隔开多个任意类型的值(参数为for可以循环的对象) 3.常用操作: 索引(正取向+反 ...
- Python的字典类型
Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...
随机推荐
- 1025 PAT Ranking (25分)
1025 PAT Ranking (25分) 1. 题目 2. 思路 设置结构体, 先对每一个local排序,再整合后排序 3. 注意点 整体排序时注意如果分数相同的情况下还要按照编号排序 4. 代码 ...
- CF1288F Red-Blue Graph
Link 考虑上下界+费用流. 对于左部点\(u\): 如果颜色为\(B\),连\((s,u,[1,+\infty),0)\). 如果颜色为\(R\),连\((u,t,[1,+\infty),0)\) ...
- webpack4.41.0配置四(热替换)
每次修改都要去编译,这个操作比较繁琐.所以我们希望编译过程是自动化的,而且页面的更新也是自动化的.所以需要使用这个热替换 1.首先安装webpack-dev-server:npm install w ...
- 在手机浏览器中判断App是否已安装
从网上搜到之前手机中判断App是否安装可以通过onblur事件+定时器来实现. 但现在要做这个功能时,按网上的说法已经不能实现了.因为现在浏览器中打开App,window不会触发onblur事件. 在 ...
- 一起了解 .Net Foundation 项目 No.4
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. BenchmarkDotN ...
- Python六剑客
1.切片 切片:截取可迭代对象的部分内容(list,tuple,dict,set,str) 2.列表解析式 列表解析式可以快速的生成一个列表 不带if条件的: 格式:[expression for i ...
- 记一次使用正则表达式+foreach控制器调试
使用forEach控制器时,变量为上一个请求返回的参数(通过正则表达式提取),设置好控制器的起始值后发现每次都是只执行一个,然后开始怀疑人生,百度了各种材料,最后还是决心好好的观察自己每一步是不是错了 ...
- Eugeny and Array(思维)
Eugeny has array a = a1, a2, ..., an, consisting of n integers. Each integer ai equals to -1, or to ...
- .h头文件 .lib库文件 .dll动态链接库文件关系
.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...
- 断点调试,issubclass和ininstance的使用
一等公民 只要可以把一个东西赋值给一个变量,这个东西就叫一等公民 断点调试 在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 变红的地方,程序执行到,就会暂停 断电应该加载报错之前 绿色箭头表示 ...