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
  1. 使用dict提供的get方法,来检查key是否存在,如果不存在,返回None,或者自己指定的value
>>> d.get('Harry')
>>> d.get('Harry', -1)
-1

注意:

返回None的时候,在终端上的Python交互式命令行不显示结果。

删除dict中,指定元素

使用pop(key)方法,就可以将对应的key-valuedict中删除:

>>> 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,需要注意的事情

setdict之间唯一的区别就是,set没有存储对应的value


参考网站:

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143167793538255adf33371774853a0ef943280573f4d000

Learning Python 009 dict(字典)和 set的更多相关文章

  1. Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...

  2. Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍

    本节的主要讨论内容是有关dict字典的一些常用的方法函数的使用和范例展示. 1. clear清除字典数据 语法结构如下: dict_obj.clear() 示例代码如下: dict1 = {'web' ...

  3. python的dict()字典数据类型的方法详解以及案例使用

    一.之前的回顾 # int  数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...

  4. Python之dict字典详解

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...

  5. Python:dict字典

    #字典dict------->唯一的映射类型 1.数据类型的划分 数据类型划分为可变数据类型和不可变数据类型. 不可变数据类型:tupe(元组).bool.int.str           可 ...

  6. python笔记-dict字典的方法2

    #!/usr/bin/env python #-*- coding:utf-8 -*- ''' 概述: 使用键值(key-value)存储,具有极快的查找速度 注意:字典是无序的 key的特性: 1. ...

  7. python笔记-dict字典的方法

    #!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...

  8. Python学习入门基础教程(learning Python)--8.1 字典数据添加与删除

             1. 字典数据添加 这个很简单,像赋值那样一项项赋值即可.语法结构如下 dict_obj[key] = value 添加数据项示例如下 >>> d1 = {'cod ...

  9. javascript和python取dict字典对象的不同

    dict1={"a":1,"b":2,"22a":44} JS: dict1.a 和 dict1["a"]都可以 pyt ...

随机推荐

  1. 培训笔记——Linux历史

    1.  计算机有分时与实时操作系统的区分,如Dos为实时操作系统,你只能给它下达一个命令,这个命令执行完了,你才能下达下一个命令:像Linux和我们用的Windows就是分时操作系统,特点是可以并发 ...

  2. [原创]java WEB学习笔记24:MVC案例完整实践(part 5)---删除操作的设计与实现

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. [原创]关于设置linux中vim 显示行号

    1.更改所有账户配置 直接更改/etc/vimrc vim /etc/vimrc 在vimrc文件的最后添加 set nu 即可 wq退出. 这样,不论使用哪个账号登陆,vim打开后都显示行号 2.为 ...

  4. 【三】MongoDB文档的CURD操作

    一.插入文档 使用insert方法插入文档到一个集合中,如果集合不存在创建集合,有以下几种方法: db.collection.insertOne({}):(v3.2 new)  #插入一个文档到集合中 ...

  5. hd acm2025

    问题:平面上有n条折线,问这些折线最多能将平面分割成多少块? 思路:像这种平面被线段分割成几部分的问题,80%用递推解决,因为n条线段与(n-1)条线段能建立联系.   你可以作图观察一下,会发现新增 ...

  6. opencv学习之路【四】——opencv文件结构介绍

    这里要感谢这篇博主的文章 部分内容转载自此 opencv在2.3版本之前 都是用的c语言实现的 而在2.3以后的版本 做了很多重大的改变 其中最主要的是用c++重写大部分结构 然后文件的结构和2.0之 ...

  7. android电池(五):电池 充电IC(PM2301)驱动分析篇【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8970363 android充电这块,有的电源管理芯片内部包含充电管理,如s5pv210 ...

  8. 算法(Algorithms)第4版 练习 1.3.1

    package com.qiusongde; import java.util.Iterator; import java.util.NoSuchElementException; import ed ...

  9. 升级到JDK8,编译时发生 Error:java: java.lang.ExceptionInInitializerError

    编译的时候出现这个问题.使用1.7的jdk没问题,但是由于po主的项目中,使用了java8编写的代码,解决java8兼容问题成为解决这个问题的首选方案. 这个日志太过简单,只告知一个异常信息,这个异常 ...

  10. mysql 数据库使用

    1. 常用命令 2. 创建表 create table test ( test_id int, test_price decimal ); 或者 create table test2 as selec ...