4.3 字典结构

  字典是Python中重要的数据类型,字典的由“键-值”对组成的集合,字典中的“值”通过“键”来引用。

4.3.1 字典的创建

  字典由一系列的“键-值”(key-value)对组成,“键-值”对之间用“逗号”隔开,并且被包含在一堆花括号中。字典与java语言中的HashMap类作用类似,都是采用“键-值”对映射的方式存储数据。

  字典的创建格式如下:

dictionary={key1:value1, key2:value2,...}

  其中,key1、key2等表示字典的key值,value1、value2等表示字典的value值。

  如果需要创建一个空的字典,只需要一对花括号即可,代码如下:

dictionary = {}

  字典的创建和访问。

dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
print(dict)
print(dict["a"]) #打印建a对应的值

注意:字典的“键”是区分大小写的。例如,dict["a"]与dict["A"]分别指向不同的值,应区别对待。

  创建字典时,也可以使用数字作为索引。

dict={1:"apple",2:"banana",3:"grape",4:"orange"}
print(dict)
print(dict[2]) #打印建2对应的值,不用双引号
[root@Dannyserver danny]# python a.py
{: 'apple', : 'banana', : 'grape', : 'orange'}
banana

  print()的使用非常灵活,也可以在print()中使用字典。下面示例字典在print()中的使用。

print("%s,%(a)s,%(b)s" %{"a":"apple", "b":"banana"})
[root@Dannyserver danny]# python a.py
{'a': 'apple', 'b': 'banana'},apple,banana

解释:其中隐式的创建了字典{“a”:"apple","b":"banana"}。这个字典用来定制print()中的参数列表。“%s”输出这个字典的内容,"%(a)s"获取字典中对应的key值“a”的value值,“%(b)s”获取字典中对应key值"b"的value值。

4.3.2 字典的访问

  字典的访问与元组、列表有所不同,元组和列表是通过数字索引来获取对应的值,而字典是通过key值获取相应的value值。访问字典格式如下:

value = dict[key]

  字典的添加、删除和修改非常简单,添加或修改操作只需要编写一条赋值语句,例如:

dict["x"] = "value"

  如果索引x不在字典dict的key列表中,字典dict将添加一条新的映射(x:value);如果索引x在字典dict的key列表中,字典dict将直接修改索引x对应的value值。

  字典与列表不同,字典并没有remove()操作。字典元素的删除可以调用del()实现,del()属于内建函数,直接调用即可。列表可以调用pop()弹出列表中的一个元素,字典也有一个pop(),该方法的声明和作用与列表的pop()有些不同。pop()的声明如下所示。

D.pop(k[,d])  -> v

pop()必须指定参数才能删除对应的值。其中,参数k表示字典的索引,如果字典D中存在索引k,返回值v等于D[k];如果字典D中没有找到索引k,返回值为d。

  如果需要清除字典中所有的内容,可以调用字典的clear()。示例如下:

#字典的添加、删除、修改操作
dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
dict["w"]="watermelon" #添加字典元素   
del(dict["a"]) #删除字典中键为a的元素
dict["g"]="grapefruit" #修改字典中键为g的值
print(dict.pop("b")) #弹出字典中键为b的元素
print(dict)
dict.clear() #清除字典中所有元素
print(dict)
[root@Dannyserver danny]# python a.py
banana
{'g': 'grapefruit', 'o': 'orange', 'w': 'watermelon'}
{}

  由于字典是无序的,因此字典中没有append()、remove()等方法。如果需要向字典插入新的元素,可以调用setdefault()。

  字典的遍历有多种方式,最直接的方式是通过"for...in..." 语句完成遍历的任务。例:

dict={1:"apple",2:"banana",3:"grape",4:"orange"}
for k in dict:
print("dict[%s]" %k,dict[k])
[root@Dannyserver danny]# python a.py
dict[] apple
dict[] banana
dict[] grape
dict[] orange

  注意:语句循环访问字典dict,变量k获取的是字典dict的key值,并没有直接获取value值。因此打印输出时,通过dict[k]来获取value值

  此外,还可以使用字典的items()实现字典的遍历操作,items()返回一个由若干元组组成的列表。例:

dict={"a":"apple","b":"banana","c":"grape","d":"orange"}
print(dict.items())
[root@Dannyserver danny]# python a.py
dict_items([('a', 'apple'), ('b', 'banana'), ('c', 'grape'), ('d', 'orange')])

  可见,items()把字典中没对key和value组成一个元组,并把这些元组存放在列表中返回。下面将使用字典item()实现字典的遍历。

dict={"a":"apple","b":"banana","c":"grape","d":"orange"}
for(k,v) in dict.items():  #变量k和v分别与字典dict中的key和cvalue值对应
print("dict[%s]" %k,v)
[root@Dannyserver danny]# python a.py
dict[a] apple
dict[b] banana
dict[c] grape
dict[d] orange

  除了能采用字符串作为字典的value值,元组、列表甚至字典都可以作为字典的value值。使用元组、列表或字典作为value值创建字典,称为混合型字典。格式如下:

dict={"key1":(tuple), "key2":[list], "key3":[dictionary] ...}

示例:

dict={"a":("apple",),"g":["grape","grapefruit"],"bo":{"b":"banana","o":"orange"}}
print(dict["a"])
print(dict["a"][0])
print(dict["g"])
print(dict["g"][1])
print(dict["bo"])
print(dict["bo"]["b"])
[root@Dannyserver danny]# python a.py
('apple',)
apple
['grape', 'grapefruit']
grapefruit
{'b': 'banana', 'o': 'orange'}
banana

python学习笔记七——字典的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  3. Python学习笔记之字典

    一.创建和使用字典 1.创建字典 phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'} 2.dict,通过映射创建字典 >>> ...

  4. 【Python学习笔记】字典操作

    字典dict是Python中唯一内置的映射类型,由键值对组成,字典是无序的.字典的键必须是不变对象,如字符串.数字.元组等,而包含可变对象的列表.字典和元组则不能作为键.这里可变和不可变的意思是指这个 ...

  5. Python学习笔记四--字典与集合

    字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...

  6. Python学习笔记七

    面向对象编程 面向对象的特性如下: 类:具有相同属性和方法的一类事物,成为类. 对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性. 封装:在类中对数据的赋值,类里面包含着类 ...

  7. python学习笔记八——字典的方法

    4.3.3 字典的方法 字典的常用方法可以极大地提高编程效率.keys()和values()分别返回字典的key列表和value列表.例: dict={"a":"appl ...

  8. python学习笔记(字典乱码)

    博主总结下 python中字典中包含中文时,使用过程中出现乱码 json.dumps(params, encoding="UTF-8", ensure_ascii=False) p ...

  9. Python学习笔记3(字典)

    创建字典 dict函数 字典的格式化字符串 字典方法 clear copy fromkeys 序列是一个按照一定顺序将值进行组织的数据结构形式,可以通过索引对其进行征引.另外还有一种数据结构是通过名字 ...

随机推荐

  1. 关于npm --save还是-save的横岗数量的细节的记录

    最近又开始鼓捣npm了,所以得稍微记录一下. 首先是npm install xxx --save 和 npm install xxx -save这两的区别(注意加粗的部分,横杠数不一样).当我搜索-- ...

  2. nginx-1.13.12 源码配置清单

    configure命令支持以下参数: --help打印帮助信息. --prefix=安装路径定义一个将保留服务器文件的目录.这个相同的目录也将被用于由configure(由库源创建的路径除外)和ngi ...

  3. AI 信息论

    信息论,主要用于量化信息. 事件发生的概率越大,包含的信息就越少.例如“太阳从东边升起”,信息量就很少. 1.自信息(self-information) 两个独立事件发生所包含的信息,等于各自发生包含 ...

  4. 安装Debian后做的一些事情

    1.source.list # aliyun deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib deb http: ...

  5. git使用备注

    git clone 代码库地址 git branch -r  查看远程分支 git branch 查看本地分支 git branch -a 查看远程和本地分支.带*的表示正在所处分支. git bra ...

  6. CentOS7.2调整Mysql数据库最大连接数

    mysql数据库最大连接数=max_connections+11:root连接,用于管理员连接数据库进行维护操作查看最大连接数:show variables like 'max_connections ...

  7. 使用yield返回IEnumber<T>集合

    yield是对一种复杂行为的简化,就是将一段代码简化为一种简单的形式. 先看一下常规的写法,下面例子中,把找出字符串阵列中,某些元素包含有某些字符的元素. class Bi { public stri ...

  8. 在属性property做一些简单的验证

    开发C#的程序,写到属性property时,我们可以在Set方法中做一些简单的规则验证: 如下面,Insus.NET写一个Age属性,只允许用户输入10以内的数字: class AA { privat ...

  9. Linux ugo 权限

    Linux 系统中文件的 ugo 权限是 Linux 进行权限管理的基本方式.本文将介绍 ugo 权限的基本概念.说明:本文的演示环境为 ubuntu 16.04. 文件的所有者和组 Linux 文件 ...

  10. 破解Zip加密文件常用的几种方法

    前言 在互联网的浪潮中,大家也许碰到过这种情况: 从网络上下载了一个zip文件,最后却发现它是用密码保护的,或者自己用密码加密了一个很重要zip文件,但是一段时间后忘记了密码,无法打开.这个时候,我们 ...