字典是另一种可变容器模型,且可存储任意类型对象。

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

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,这种就是字典的实现方式。
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的。
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重。【不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,】键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:

一、增

dict2 = {'marry':[,'北京'],'amy':[,'山东'],'lily':[,'河南']}  #值是列表(数组)

dict2['wuzm']= [,'山东']   #增加响应的键和值就行
print(dict2)

二、删

能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

dict2 = {'marry':[,'北京'],'amy':[,'山东'],'lily':[,'河南']}  #值是列表(数组)
del dict2['marry'] #删除键为marry的条目
dict2.clear() #清空字典里的所有条目
del dict2 #删除字典dict2
print(dict2)

三、改

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

dict1 = {'Name': 'Zara', 'Age': , 'Class': 'First'}
dict1['Age'] = #修改单个字段
print(dict1)

四、查

把相应的键放入熟悉的方括弧,通过键查询响应的数据如下实例:

dict2 = {'marry':[,'北京'],'amy':[,'山东'],'lily':[,'河南']}  #值是列表(数组)
print(dict2['marry']) #通过键来访问,get方法下面介绍

五、函数

len(dict)   计算字典元素个数,即键的总数。

str(dict)  输出字典可打印的字符串表示。

type(dict)  返回输入的变量类型,如果变量是字典就返回字典类型

dict1 = {'Name': 'Zara', 'Age': , 'Class': 'First'}
print(len(dict1)) #计算字典元素个数
print(str(dict1)) # 输出字典可打印的字符串表示
print(type(dict1)) #返回输入的变量类型,如果是变量是字典类型就返回字典类型

六、方法

dict1 = {'Name': 'Zara', 'Age': , 'Class': 'First'}
dict2 = {'marry':[,'北京'],'amy':[,'山东'],'lily':[,'河南']} #值是列表(数组)
seq = ('Name','Age','class') dict1.clear() #删除dict1里的所有元素 dict1.copy() #返回一个字典的浅复制
print(dict1) print(dict1.fromkeys(seq,)) # fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,
# value 为字典所有键对应的初始值。 print(dict1.get('Name')) #返回指定键的值,如果值不在字典中返回default值
print(dict1.items()) #以列表返回可遍历的(键, 值) 元组数组
print(dict1.keys()) #以列表返回一个字典所有的键
print(dict1.values()) #以列表返回字典中的所有值
print(dict1.setdefault('name1')) #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default=none dict1.update(dict2) # 把字典dict2的键/值对更新到dict里
print(dict1) print(dict1.pop('Name')) #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
print(dict1.popitem()) #随机返回并删除字典中的一对键和值。

循环字典:

 dic = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}
for k in dic:
print(k,dic[k]) #打印key和value的值,推荐使用这种方式,速度快
for k,v in dic.items():
print(k,v) #打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高

python学习笔记(5)数据类型-字典的更多相关文章

  1. 【python学习笔记】4.字典:当索引不好用时

    [python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...

  2. Python学习笔记 - day3 - 数据类型及运算符

    Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  3. python学习笔记6(字典)

    映射:键值对的关系,键(key)映射值(value) 字典是Python唯一的映射类型 >>> phonebook = {'} >>> phonebook {'} ...

  4. python学习笔记:数据类型——数字、字符串、元祖、字典

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数 ...

  5. python学习笔记(三)、字典

    字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...

  6. python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建         不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上 ...

  7. Python学习笔记---数 数据类型 运算

    python的四种数类型: 整数 int 浮点型 float 布尔 boolen 复数 complex >>> type(5)<class 'int'>>>& ...

  8. Python学习笔记3_数据类型

    Python数据类型:数字.字符串.列表.元祖.字典 一.数字类型:(整型.长整型.浮点型.复数型) 1.整型(int):表示范围-2,147,483,648到2,147,483,647 2.长整型( ...

  9. 02 Python学习笔记-基本数据类型(二)

    一.基本知识 1.缩进: 2.一行多条语句: 3.断行: 4.注释 # 单行注释 '''这是一段 多行注释''' 5. 变量 1. 变量类型(局部变量.全局变量.系统变量) 2. 变量赋值 多重赋值x ...

  10. python学习笔记(数据类型)

    python数据类型: int 类型 float 小数类型 string 字符串 布尔类型 a = True b = False 1.列表,也称数组或list或array.它的表达方式通过下标或索引或 ...

随机推荐

  1. 运用Access学习数据库的三大范式

    第一范式(1NF):强调的是列的原子性,即“列不能够再分成其他几列”,同一列中不能有多个值. 例子:业余爱好编码表+员工编码表 当员工杨来的业余爱好有多个时,此时的数据库设计不满足第一范式,可进行如下 ...

  2. UML-什么是GRASP?

    1.定义 GRASP:General Responsibility Assignment Software Pattern,即通用职责分配软件模式,使用职责进行OO设计的学习工具. 2.本书目标 1) ...

  3. Luogu P3031 高于中位数

    定义序列\(x_i = f([H_i >=x])\;\;\;\;其中f(0) = -1,f(1) = 1\),那么区间[i,j]满足条件当且仅当sum_j-sum_{i-1} > 0,即s ...

  4. Object中有哪些公共方法及作用

    大家在学习java的时候,一定遇到过Object类,因为在java单一继承体系中Object类是根类,所有的类都会继承它,并拥有Object的公共方法,意味着在java的面向对象的世界中,所有对象都拥 ...

  5. c#学习笔记01——引用&类

    数据类型 值类型 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U +0000 到 U +ffff ...

  6. 巧用函数,使Sql中in的用法更多变

    在Sql中我们经常会用到in 普遍的写法为 where xx in ('1','2','3') 通过函数写法为: IF EXISTS ( SELECT * FROM sys.objects WHERE ...

  7. php获取客户IP

    获取客户真实IP,保存到数据库建议转整 function getIp(){ $ip = ''; if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip = $_SERV ...

  8. LeetCode——919.完全二叉树插入器

    完全二叉树是每一层(除最后一层外)都是完全填充(即,结点数达到最大)的,并且所有的结点都尽可能地集中在左侧. 设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作: CBT ...

  9. python 3.6

    安装了最新版anaconda3-4.3 发现jupyter-notebook 少了一些东西.需要手工安装 https://github.com/Anaconda-Platform/nbpresent

  10. rsync+nfs+sersync实战案例

    回顾: 1.rsync 统一备份各个服务器的配置文件或重要文件 系统配置文件 日志文件 系统日志文件 messages.secure.cron 服务日志文件 access_log.access.log ...