Learning Python 009 dict(字典)和 set
Python dict(字典)和 set
dict (字典)是什么东西
dict全称dictionary。为什么这个数据结构取名叫dict。因为dict的实现原理和查字典是一样的。dict使用了键-值(key-value)存储的方式。就好比在字典里查某个字一样。dict数据结构中的键(key)就好比字典中的索引表里这个字对应的页码。值(value)就好比字典中这个字的内容。这样的特点,效果就是查找速度极快。
例如:一个人“名字”-“成绩”的对照表,直接根据名字查找成绩:
定义dict字典
>>> d = {'Aobo': 59, 'Shutong': 98, 'Yunjie': 86}
>>> d['Aobo']
59
向dict中,添加元素
>>> d['Yue'] = 67
>>> d['Yue']
67
修改dict中,某个键(key)的值(value)
>>> d['Aobo'] = 88
>>> d['Aobo']
88
判断 键(key)是否存在于这个dict(字典)中
如果,key不存在,会报错。比如:
>>> d['Harry']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Harry'
避免出现这样的报错的方法有:
1. 使用in判断key是否存在:
>>> 'Harry' in d
False
- 使用dict提供的
get方法,来检查key是否存在,如果不存在,返回None,或者自己指定的value:
>>> d.get('Harry')
>>> d.get('Harry', -1)
-1
注意:
返回None的时候,在终端上的Python交互式命令行不显示结果。
删除dict中,指定键元素
使用pop(key)方法,就可以将对应的key-value在dict中删除:
>>> d.pop('Aobo')
88
>>> d
{'Shutong': 98, 'Yunjie': 86, 'Yue': 67}
使用dict,你需要注意的事情
特点是比较出来的,所以,和list比较,dict有几个特点
1. 速度快。无论是查找还是插入,速度都极快,并且不会随着key的增加而变慢。
2. 需要占用大量的内存,内存浪费多。
那么,list的特点就是:
1. 查找和插入的时间随着元素的增加而增加;
2. 占用空间小,浪费内存很少。
注意:key的值是不可变的。
字符串、整数等都是不可变的,可以放心地作为key。而list是可变的,就不能作为key。
set
介绍
与dict数据结构类似,只是它只有key,没有value
定义一个set数据结构
使用set()函数定义set数据结构。在()里面添加一个list数据([]):
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
注意:
set会自动将重复的元素过滤掉。所以,在set中,没有重复的key。
向set数据类型中,添加元素
使用add()方法,添加元素。
>>> s.add(4)
>>> s
{1, 2, 3, 4}
可以添加重复的key,但是不会有效果:
>>> s.add(3)
>>> s
{1, 2, 3, 4}
向set数据类型中,删除指定key的元素
使用remove()方法,可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
对set数据,进行交集和并集等操作
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
使用set,需要注意的事情
set和dict之间唯一的区别就是,set没有存储对应的value。
Learning Python 009 dict(字典)和 set的更多相关文章
- Python的dict字典结构操作方法学习笔记
Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...
- Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍
本节的主要讨论内容是有关dict字典的一些常用的方法函数的使用和范例展示. 1. clear清除字典数据 语法结构如下: dict_obj.clear() 示例代码如下: dict1 = {'web' ...
- python的dict()字典数据类型的方法详解以及案例使用
一.之前的回顾 # int 数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...
- Python之dict字典详解
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...
- Python:dict字典
#字典dict------->唯一的映射类型 1.数据类型的划分 数据类型划分为可变数据类型和不可变数据类型. 不可变数据类型:tupe(元组).bool.int.str 可 ...
- python笔记-dict字典的方法2
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' 概述: 使用键值(key-value)存储,具有极快的查找速度 注意:字典是无序的 key的特性: 1. ...
- python笔记-dict字典的方法
#!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...
- Python学习入门基础教程(learning Python)--8.1 字典数据添加与删除
1. 字典数据添加 这个很简单,像赋值那样一项项赋值即可.语法结构如下 dict_obj[key] = value 添加数据项示例如下 >>> d1 = {'cod ...
- javascript和python取dict字典对象的不同
dict1={"a":1,"b":2,"22a":44} JS: dict1.a 和 dict1["a"]都可以 pyt ...
随机推荐
- DevOps means no Ops!
DevOps means no Ops! 只单纯地搞网络的话或许你可以搞得非常好,并且获得不错的薪资,不过,5年后~10年后~,那时候随便一个人经过简单的学习就能通过Web界面或者专用的工具就能搞定一 ...
- 第四章 python中的面向对象设计
一.首先来理解几个面向对象的关键特性: 1.封装:对象可以将他们的内部状态隐藏起来.python中所有特性都是公开可用的. 2.继承:一个类可以是一个或多个类的子类.python支持多重继承,使用时需 ...
- python 3 并发编程多进程 paramiko 模块
python 3 paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的pa ...
- 织梦dedecms 扩展channel栏目标签 获取交叉栏目名称和链接
channel栏目标签默认有调用顶级栏目(top).子栏目(son).同级栏目(self),那想获取交叉栏目的名称和链接怎么获取呢? 其实在原来的代码上改一下就可以了.下面是具体代码.打开文件chan ...
- hdoj1001--Sum Problem
Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge).In this problem, y ...
- Sobel导数
Sobel 导数 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 Sobel 对图像求导. 如何使用OpenCV函数 Scharr 更准确地计算 核的导数. 原理 Note 以下内容来自于 ...
- JQUERY Uploadify 3.1 C#使用案例
近来因为要做一个上传功能,而firefox又不能直接使用file这样的标签,所以试着用js来写了一个,结果发现代码太多,验证太复杂,而且效果也不理想. 相对的,jquery提供的这一套uploadif ...
- POJ 3126 Prime Path(BFS算法)
思路:宽度优先搜索(BFS算法) #include<iostream> #include<stdio.h> #include<cmath> #include< ...
- cout是右结合的
cout是右结合的,(从右到左压栈?) cout<<++a<<","<<a++; 的运行顺序是 1.a的值压栈 2.a自加 3.‘,’压栈 4 ...
- java - BigDecimal的format()方法和setScale()方法格式字符串
1.BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删 ...