字典定义

字典是一种 key-value 的数据类型,这点很重要,是区别使用列表和字典的依据。

语法格式:

info = {
'stu1101': "Aaron",
'stu1102': "Jim",
'stu1103': "Jack",
}

字典的特性

  • dict是无序的
  • key必须是唯一的,所以字典具有天生去重
  • 与键值向关联的值可以是数字,字符串和列表

字典操作

字典查找

>>> "stu1102" in info   #标准查找用法
True
>>> info.get("stu1102") #获取
'Jim'
>>> info["stu1102"] #同上,但是看下面
'Jim'
>>> info["stu1105"] #如果一个key不存在,就报错,get不会,不存在只返回None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'stu1105'

字典值添加

>>> info["stu1104"] = "West"
>>> print(info)
{'stu1102': 'Jim', 'stu1104': 'West', 'stu1103': 'Jack', 'stu1101': 'Aaron'}

字典值修改

>>> info["stu1103"] = "West"
>>> print(info)
{'stu1102': 'Jim', 'stu1103': 'West', 'stu1104': 'JacWest'}

字典值删除

>>> info
{'stu1102': 'Jim', 'stu1103': 'Jack', 'stu1101': 'Aaron'}
>>> info.pop("stu1101") #标准删除姿势
'Aaron'
>>> info
{'stu1102': Jim', 'stu1103': 'Jack'}
>>> del info['stu1103'] #永久删除
>>> info
{'stu1102': 'Jim'} >>> info = {'stu1102': 'Jim', 'stu1103': 'Jack'}
>>> info
{'stu1102': 'Jim', 'stu1103': 'Jack'} #随机删除
>>> info.popitem()
('stu1102', 'LongZe Luola')
>>> info
{'stu1103': 'XiaoZe Maliya'}

字典遍历

遍历分为三种,遍历键值对,遍历键和遍历键值。需要注意的是,在遍历字典时默认是遍历所有的键。在下面的历程中“for key in info.keys():”,可以改为“for key in info:”,但显示的调用方法keys(),代码的可读性更强。

info = {
'stu1101': "Aaron",
'stu1102': "Jim",
'stu1103': "Jack",
} #遍历键值对
for key,value in info.items():
print("\nkey:"+key)
print("value:"+value) #输出:
key:stu1101
value:Aaron key:stu1102
value:Jim key:stu1103
value:Jack #遍历键
for key in info.keys():
print("key:"+key) #输出:
key:stu1101
key:stu1102
key:stu1103 #遍历键值
for value in info.values():
print("value:"+values) #输出:
value:Aaron
value:Jim
value:Jack

由字典的特性知,字典是无序的。但有以特定顺序获取键和键值的需求,这可以利用sort方法来实现。

info = {
'stu1101': "Aaron",
'stu1102': "Jim",
'stu1103': "Jack",
} for key in sorted(info.keys())
print("key:"+key) #输出:
key:stu1101
key:stu1102
key:stu1103

字典嵌套

字典的键值可以嵌套数字,列表和字典。同样的,还有列表的嵌套,我说的是在列表中嵌套字典。具体使用哪种嵌套的数据类型,关键是要把握好列表和字典各自的特性。对于列表来说,列表中的元素描述的应该对应的是同一种属性,比如,要对披萨字典的描述,其中,披萨的配料就不止是一个值能表示,因此,这个字典的键值就是一个列表,即字典嵌套列表;对于字典来说,把握好键值对的理解就好,它们是一一对应的。字典嵌套的使用,难点不是在如何操作,而是能不能设计一个合理的建模模型。

字典嵌套的访问问题

不管是谁嵌套谁,列表和字典的访问都是通过“[]”来实现的,唯一不同是“[]”中的是索引,还是键的问题。

#字典嵌套列表
pissa = {
'crust':'thick',
'toppings':['mushrooms','extra','cheese'],
}
print(pissa['toppings'][2])
#输出:
cheese #列表嵌套字典
people_info = [
{'name':'Aaron','age':'24'},
{'name':'Jim','age':'25'},
]
print(people_info[1]['name'])
#输出:
Jim

python数据类型之字典的更多相关文章

  1. python数据类型:字典Dictionary

    python数据类型:字典Dictionary 字典是一种可变容器模型,可以存储任意类型对象 键是唯一的,但是值不需要唯一 值可以取任何数据类型,但是键必须是不可变的,如字符串,数字,元组 创建字典: ...

  2. Python数据类型-6 字典

    字典 Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度.但它是无序的,包含的元素个数不限, ...

  3. Python数据类型(字典和集合)

    1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...

  4. python 数据类型三 (字典)

    一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...

  5. Python数据类型-04.字典

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据 ------------ 完美的分割线 ------------- 1.字典引入 # 为何还要用字典?存放一个人的信 ...

  6. Python数据类型(字典)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字典(Dictionary) 字典 ...

  7. python数据类型之字典操作

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由key和value成对组成.基本语法如下: infos = {"name&q ...

  8. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)

    字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...

  9. Python学习(六) Python数据类型:字典(重要)

    字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'mal ...

  10. python 数据类型 之 字典

    python 3.6.5字典的特性和定义定义:{'key_1':vlaue_1,'key_2':value_2}1.键与值用冒号 : 分开2.项与项 用 , 分开 特性1.可以存放多个值,可以不唯一, ...

随机推荐

  1. Educational Codeforces Round 25 B. Five-In-a-Row

    题目链接:http://codeforces.com/contest/825/problem/B B. Five-In-a-Row time limit per test 1 second memor ...

  2. 操作实践题 - HTML 列表综合应用

    通过对列表的综合应用,编写如下效果网页: 解答: <html> <head> <title>操作实践题</title> <meta http-eq ...

  3. 【vim】分割窗口、标签页与Quickfix窗口

    vim支持窗口分割和标签页,合适地使用这两种特性可以使文字编辑工作更愉快. 1. 窗口分割 vim支持窗口的水平分割和垂直分割.以下是常用的操作指令或快捷键. 命令 说明 vim -o <fil ...

  4. 《JAVA与模式》之原型模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办 ...

  5. 【12】JMicro微服务-Zookeeper

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到11小节 1. CuratorFramework支持 JMicro目前基于Zookeeper实现统 ...

  6. OS之内存管理 ---基本的内存管理策略(一)

    基本概念 基本硬件 CPU可以直接访问的通用存储只有内存和处理器的内置的寄存器.机器指令可以用内存地址作为参数,而不能用磁盘地址作为参数.所以执行指令以及指令使用的数据,应在这些可执行访问的存储设备上 ...

  7. 监督学习——决策树理论与实践(上):分类决策树

    1. 介绍         决策树是一种依托决策而建立起来的一种树.在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路 ...

  8. 【Java并发编程】:并发新特性—塞队列和阻塞栈

    阻塞队列 阻塞队列是Java5并发新特性中的内容,阻塞队列的接口是Java.util.concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue.Delay ...

  9. Hadoop HDFS概念学习系列之HDFS升级和回滚机制(十二)

    不多说,直接上干货! HDFS升级和回滚机制 作为一个大型的分布式系统,Hadoop内部实现了一套升级机制,当在一个集群上升级Hadoop时,像其他的软件升级一样,可能会有新的bug或一些会影响现有应 ...

  10. VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹

      症状:主要表现在Win7中用VM11安装的Ubuntu14.04中,安装完自带的VMware Tools之后,/mnt/hgfs 中没有前面已经设置好的共享文件夹.   仔细查看了安装过程,发现在 ...