python中的字典,就是通常说的map,即 key/value集合的数据结构。

本文来介绍下在python下如何使用字典。 对于map这种数据结构能干什么,我们就不说了,这是一个常见的数据结构,我们假设大家都理解了。

我们重点讲在python下如何使用它,其实就是熟悉相关的api方法了。

作为一个数据结构,使用它,不外乎包括创建(包括初始化)、增删查改、以及其它一些操作。

一、创建

通过{}来标识一个字典,内容是键值对,形式就是典型的json对象的格式。如:

users = {}  #创建一个空的字典

users = {1:"jack",2:"tom"} #创建一个字典,包含两个成员.

除上面这种方式外,还可以利用内置函数 dict 来创建字典。

二、插入和修改

举例如下

>>> users={}
>>> users[3]="jame"
>>> print users
{3: 'jame'}
>>> users[4]="tom"
>>> users[10]="mike"
>>> print users
{10: 'mike', 3: 'jame', 4: 'tom'}
>>> users[4]="tom1"
>>> print users
{10: 'mike', 3: 'jame', 4: 'tom1'}

直接通过 字典变量名[key名]就可以添加新的key-value项。 注意上面[]的数字不是序号,字典没有序号的概念,这里的数字是key值。

从上面例子可以看出,如果指定的key不存在,就会自动添加一个。
如果指定的key存在,就会用指定的值替换存在的key对应的value值。

三、删除

1、清除字典中的所有项

字典对象提供了 clear方法,可以清楚字典中的所有项。

2、del 字典变量

举例如下

>>> users={1:"tom"}
>>> newusers = users
>>> del users
>>> print users
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'users' is not defined
>>> print newusers
{1: 'tom'}

del是python中的内置语句,用于删除变量的定义。从上面例子可以看出,它只是删除变量定义,不会删除变量指向的内容,当然如果这个内容没有被其它变量引用,python会自动释放。上面的例子,users和newusers指向同一个字典对象,即使我们删除了users变量,对newusers是不影响的。
这点与clear方法不同,clear方法是删除字典中的所有内容,如果多个变量指向同一字典,该字典内容被clear啊,显然所有变量都能察觉到。

3、pop方法

先看例子

>>> data={"x":1,"y":2}
>>> print data
{'y': 2, 'x': 1}
>>> value = data.pop("x")
>>> print value
1
>>> print data
{'y': 2}
>>> value = data.pop("z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'z'

pop方法是根据传入的key值,返回对应的value值,并删除字典中的该条目。
但如果指定的key对应的条目在字典中不存在,则程序会出现异常。

四、查询

1、判断key是否存在

在很多情况下,我们需要判断一个key是否存在。代码如:

>>> data={"x":1}
>>> if "x" in data:
... print True
... else:
... print False
...
True
>>> if "y" in data:
... print True
... else:
... print False
...
False

除了用 in 运算符来判断某个key是否在字典中存在外,还可以用字典的方法 has_key(key)来检查,效果是一样的。

2、获取指定key的value

格式:字典变量[key值],举例如

>>> data={"x":1}
>>> data["x"]
1
>>> data["y"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'y'

可以看出,如果key在字典中不存在,会报异常。还有一种更友好的方式,就是利用get方法,举例如下:

>>> data={"x":1}
>>> print data.get("x")
1
>>> print data.get("y")
None

可以看出,即使key不存在,程序不会出异常,get会返回一个None值。
如果我们希望在获取key对应的value时,如果key存在,则正常返回,如果key不存在,可以自动往字典中添加一个条目,并返回设置的条目的值,这可以用到setdefault方法,举例如下:

>>> data={"x":1}
>>> print data.setdefault("x")
1
>>> print data.setdefault("x",3)
1
>>> print data
{'x': 1}
>>> print data.setdefault("y",2)
2
>>> print data
{'y': 2, 'x': 1}
>>> print data.setdefault("z")
None
>>> print data
{'y': 2, 'x': 1, 'z': None}

从上面代码例子中,我们可以很清晰的看出setdefault方法的作用。

3、遍历字典

很多场景下,我们需要遍历整个字典,获取到其中的每个条目信息。这可以这么来做,具体看代码:

>>> data = {"x":1,"y":2,"z":3}
>>> for key in data:
... print key
... print data[key]

通过for循环,可以很方便的遍历整个字典。

总结下,本文按照使用场景的方式介绍了下字典最常用的一些操作,能满足绝大部分应用。除上面介绍的外,还有一些操作方法,不太常用,这里就不再介绍。

Python 2.7 学习笔记 字典(map)的使用的更多相关文章

  1. 《python基础教程(第二版)》学习笔记 字典(第4章)

    <python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),(' ...

  2. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  3. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  4. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  5. Go学习笔记之Map

    Go学习笔记之Map Map 引用类型,哈希表.map的key必须可以比较相等,除了slice, map, function的内建类型都可以作为key.struct类型不包含上述字段,也可作为key. ...

  6. Python学习笔记之map、zip和filter函数

    这篇文章主要介绍 Python 中几个常用的内置函数,用好这几个函数可以让自己的代码更加 Pythonnic 哦 1.map map() 将函数 func 作用于序列 seq 的每一个元素,并返回处理 ...

  7. Python学习笔记(字典)

    今天学习一个python中的基本类型--字典(dictionary) 字典这种数据结构有点像我们平常用的通讯录,有一个名字和这个名字对应的信息.在字典中,名字叫做“键”,对应的内容信息叫做“值”.字典 ...

  8. Python快速入门学习笔记(二)

    注:本学习笔记参考了廖雪峰老师的Python学习教程,教程地址为:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb49318210 ...

  9. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

随机推荐

  1. 【android开发】小说阅读器

    新人开发理念 1 activity 是每个功能页面的入口 2 动画效果需要配合资源文件中,动画的定义 3 文件的读取是有权限控制的 4 布局应该尽量简单,这样才能让程序跑的飞快 前记 重新开始一个新的 ...

  2. QTableView另类打印解决方案(复用render函数去解决print问题)

    Qt QTableView另类打印解决方案     上回书说道Qt的model/view,我就做了个demo用于显示数据库中的内容.没想到tableview的打印竟然成了问题.我困惑了,难道Qt不应该 ...

  3. IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案)

    原文 IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案) 对于IIS网站,大伙用的比较多,就不啰嗦了.   今天和说说大伙比较少使用的"IIS应用程序”和虚拟目录的区别 ...

  4. DCI架构

    提出的文章:DCI架构:一个面向对象编程的新图景 http://wenku.baidu.com/view/a7b5e401de80d4d8d15a4fed.html http://www.360doc ...

  5. Python:2D画图库matplotlib学习总结

    本文为学习笔记----总结!大部分为demo.一部分为学习中遇到的问题总结.包含怎么设置标签为中文等.matlab博大精深.须要用的时候再继续吧. Pyplot tutorial Demo地址为:点击 ...

  6. iOS开发UI 篇—CAlayer层的属性

    一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...

  7. GDB调试之暂停

    暂停机制: 有3种方式可以通知GDB暂停程序的执行. a.断点: 通知GDB在程序中的特定位置暂停执行: b.监视点:通知GDB当特定内存位置(或者涉及一个或多个位置的表达式)的值发生变化时暂停执行: ...

  8. html5 中的SVG 和canvas

    想到昨天看资料的时候,发现html5 中的SVG 和canvas 都可以表示图形,那它们到底有哪些区别呢?该如何正确的使用它们呢? 1.SVG:可缩放矢量图形,(Scalable Vector Gra ...

  9. 解决Windows 7下IE11无法卸载、无法重新安装,提示安装了更新的IE版本

    2013年12月14日 iefans 有用户反馈在Windows 7系统上安装IE11时发现安装程序似乎出了问题,等待了很长时间都没有响应之后就断开了电脑的电源.之后IE11浏览器虽然能使用,却无法安 ...

  10. sql 时间和字符串 取到毫秒级

    (select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')+(Select ri ...