(python)数据结构---字典
一、描述
- 由键值key-value组成的数据的集合
- 可变、无序的,key不可以重复
- 字典的键key要可hash(列表、字典、集合不可哈希),不可变的数据结构是可哈希的(字符串、元组、对象、bytes)
- 字典的值value可以是任意的数据类型
二、字典的相关操作
1、访问字典的值value
- 字典可以通过key去访问对应的值
- key不存在抛出KeyError异常
d = {"name": "wj", "age": 22}
print(d["name"])
运行结果如下:
wj
2、dict.get(key[, default])
- 返回key对应的值value
- key不存在返回缺省值default,如果没有设置缺省值就返回None
d = {"name": "wj", "age": 22}
print(d.get("name"))
运行结果如下:
wj
3、dict.setdefault(key[, default])
- 返回key对应的值value
- key不存在就创建这对kv对,value是default值,如果没有设置default值,缺省为None
d = {"name": "wj", "age": 22}
print(d.setdefault("gender", "F"))
print(d)
运行结果如下:
F
{'name': 'wj', 'age': 22, 'gender': 'F'}
4、通过key去增加或者修改值
- 如果key存在就修改值,如果key不存在就增加该键值对
d = {"name": "wj", "age": 22}
d["name"] = "yzw"
print(d)
d["gender"] = "F"
print(d)
运行结果如下:
{'name': 'yzw', 'age': 22}
{'name': 'yzw', 'gender': 'F', 'age': 22}
5、dict.update([other])
- 使用另外一个字典的kv对更新本字典
- 如果key存在,就更新,不存在,就增加
d = {"name": "wj", "age": 22}
d.update(name="yaw")
d.update((("gender", "F"), ))
d.update({"birthday": "8-7"})
print(d)
运行结果如下:
{'gender': 'F', 'name': 'yaw', 'birthday': '8-7', 'age': 22}
6、dict.pop(key[, default])
- key存在,移除它,并返回它的值value
- 可以不存在,返回默认值defalut,没有设置defalut,抛出异常KeyError
d = {"name": "wj", "age": 22}
d.pop("name")
print(d)
运行结果如下:
{'age': 22}
7、dict.popitem()
- 移除并返回一个任意的键值对
- 如果字典为空,抛异常KeyError
d = {"name": "wj", "age": 22}
d.popitem()
print(d)
运行结果如下:
{'name': 'wj'}
8、dict.clear()
- 清空字典
9、字典的删除
- 通过del语句直接删除字典或者删除指定的key
d = {"name": "wj", "age": 22}
del d["name"]
print(d)
del d
# print(d) NameError: name 'd' is not defined
运行结果如下:
{'age': 22}
10、字典遍历
- 遍历key
d = {"name": "wj", "age": 22}
for k in d:
print(k)
d = {"name": "wj", "age": 22}
for k in d.keys():
print(k)
- 遍历value
d = {"name": "wj", "age": 22}
for k in d:
print(d[k])
d = {"name": "wj", "age": 22}
for k in d:
print(d.get(k))
d = {"name": "wj", "age": 22}
for k in d.values():
print(k)
- 遍历item,键值对
d = {"name": "wj", "age": 22}
for k, v in d.items():
print(k, v)
11、字典遍历和移除
- 注意,字典在遍历的时候是不能够移除其元素的,否则抛异常RuntimeError
- 如果想要在遍历的时候移除元素,可以在遍历的时候将key加入到一个列表中,然后遍历这个列表,来移除key
d = {"name": "wj", "age": 22}
keys = []
for k, v in d.items():
keys.append(k)
for k in keys:
d.pop(k)
print(d)
运行结果如下:
{}
12、工厂函数defaultdict
- 当key不存在的时候,会调用这个工厂函数来生成key对应的值value
from collections import defaultdict
import random d = defaultdict(list)
for k in "abcde":
for i in range(random.randint(1, 5)):
d[k].append(i) print(d) 运行结果如下:
defaultdict(<class 'list'>, {'d': [0, 1, 2, 3], 'a': [0], 'c': [0, 1, 2, 3, 4], 'b': [0, 1, 2, 3, 4], 'e': [0, 1, 2, 3, 4]})
13、有序字典OrderedDict
- 有序字典会记录元素插入的顺序,打印的时候也是按照这个顺序打印的
- 比如:有的时候需要取出ID,希望是按照输入时的顺序取出,因为输入时的顺序是有序的,这种情况可以使用有序字典
d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
print(d)
from collections import OrderedDict
od = OrderedDict()
for k, v in d.items():
od[k] = d[k]
print(od)
运行结果如下:
{'pear': 1, 'orange': 2, 'banana': 3, 'apple': 4}
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
(python)数据结构---字典的更多相关文章
- python 数据结构-字典
原文地址:http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 理解字典的最佳方式是把它看做无序的键: 值 ...
- Python数据结构-字典
tel={,} tel[ print(tel) print(tel['tom']) del tel['tom'] print(tel) print(tel.keys()) 运行结果: {, , } { ...
- Python数据结构:列表、元组和字典
在Python中有三种内建的数据结构——列表list.元组tuple和字典dict 列表中的项目包括在方括号中,项目之间用逗号分割 元组和列表十分类似,只不过元组和字符串一样是不可变的 即你不能修改元 ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- python数据结构之图的实现
python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- Python数据结构之注意事项
1.列表 列表是Python中使用最频繁的数据结构,列表提供很多函数操作,比如下标存取,分片,index,append,remove等等. 例如: list=[1,2,'hello','python ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
- Python学习【第2篇】:Python数据结构
Python数据结构 1.数字类型 2.字符串 3.列表 4.元组 5.字典 6.集合
随机推荐
- 如何使用Keras的Model visualization功能
问题 安装上graphviz和pydot之后调用出现如下问题 ['dot', '-Tpng', '/tmp/tmp1KPaiV'] return code: 1 stdout, stderr: War ...
- mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
一.概述 物理备份和恢复又分为冷备份和热备份.与逻辑备份相比,它最大优点是备份和恢复的速度更快.因为物理备份的原理都是基于文件的cp. 1.1 冷备份 冷备份就是停掉数据库服务.这种物理备份一般很少使 ...
- 微信小程序自定义navigationBar标题栏
小程序默认使用的navigationBar只能设置颜色.文字,左侧返回按钮也是不可改变的,若要实现下方效果有解决方案,但是也有一定的问题. 1.更改app.json "window" ...
- SLAM入门之视觉里程计(3):两视图对极约束 基础矩阵
在上篇相机模型中介绍了图像的成像过程,场景中的三维点通过"小孔"映射到二维的图像平面,可以使用下面公式描述: \[ x = MX \]其中,\(c\)是图像中的像点,\(M\)是一 ...
- python使用多线程
threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器. 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成. 如果主线程准备退出时,不需要 ...
- 区块链--Ubuntu上搭建以太坊私有链
1.搭建私链所需环境 操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度 软件: geth客户端 Mist和Ethereum Wallet:https://githu ...
- java8 Stream sorted()的一次调用链记录
代码 public static void main (String[] args) { Stream.of("d2", "a2", "b1" ...
- OpenOffice安装和转换乱码解决方案
前言: OpenOffice项目中用途:word转换pdf Windows安装.转换:安装包下载后一路OK 就可以正常安装,转换没有问题 Linux安装.转换:安装有分DEB包和RPM包,下面会说 ...
- Hibernate-在Eclipse(Oxygen)中安装Hibernatetools插件
Eclipse(Luna)中是没有Hibernate插件的,该插件是需要自己进行添加. 在网上找了一下关于如何在Eclipse中安装Hibernatetools插件的方法,很多都是先找到Hiberna ...
- 【Spring】16、注解事务 @Transactional
概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性.Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型, ...