一、映射类型

我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系。
字典是Python唯一的映射类型。

扩展1:哈希表
一种数据结构,值是根据相关的键进行数据存储的,形成"键-值对"(key-value pairs),哈希表中的值是没有顺序的。

扩展2:映射类型与序列类型的区别

1):访问方式不同,序列类型用数字类型的键,而映射类型可以用其他对象类型做键(一般式字符串)

>>> lis = ['a','b','c']
>>> lis[2]
'c'
>>> dic = {'name':'a','father':'b','mother':'c'}
>>> dic['mother']
'c'

2):存储类型不同,映射类型的键,直接或间接地与值相关。
3):序列类型,有序之列;映射类型则无序之列

二、字典

1、工厂方法dict():

>>> tu=(['a','b'],['xx','yy'])
>>> tu
(['a', 'b'], ['xx', 'yy'])
>>> fdict = dict(tu)
>>> fdict
{'a': 'b', 'xx': 'yy'}

2、访问形式:

>>> dic
{'father': 'b', 'name': 'a', 'mother': 'c'}
>>> for obj in dic:
    print obj

father
name
mother
>>> for obj in dic.keys():
    print obj

father
name
mother
>>> for obj in dic.values():
    print obj

b
a
c
>>> for obj in dic.items():
    print obj

('father', 'b')
('name', 'a')
('mother', 'c')
>>> 

3、has_key()、in、not in来检查是否有某个键,has_key()已慢慢弃用了。

4、有则更新,无则添

5、删除

del dic['name']   #删除元素
del dic #删除整个

6、操作符
[]、和 in、not in

>>> if 'name' in dic:
    print dic['name']
a

7、相关函数
dict():创建字典
len():返回键值对数目
hash(obj):返回obj的哈希值

8、内建方法
dict.clear():删除字典中所有元素
dict.copy():浅copy
dict.formkeys():创建字典
dict.get(key,default=None):返回对应键值
dict.has_key():键是否存在
dict.items():返回字典中键值对元祖的列表
dict.keys():键的列表dict.values():值的列表
......

>>> dic.keys()
['father', 'name', 'mother']
>>> dic.values()
['b', 'a', 'c']
>>> dic.get('name')
'a'

三、注意

1、不允许一个键对应多个值,一个键只能对应一项
2、当键发生冲突时,取最后一个。
3、Python不会检查键的冲突,也不会因为键的冲突而产生错误,如果检查每个键是否冲突势必会占用很多内存。

>>> dic={'a':'ss','a':"xxxx"}
>>> dic
{'a': 'xxxx'}

4、键必须是可哈希的。
所有不可变类型都是可哈希的,不可变类型如(列表、字典)则不能。
不可变类型:string,integer,tuple、
可变类型:list,dict

5、值相同的数字表示相同的键,如1和1.0的哈希值是相同的,因此它们是相同的键。

>>> dic={1:'a',1.0:'b'}
>>> dic
{1: 'b'}

Python入门笔记(10):字典的更多相关文章

  1. python入门(10)使用List和tuple

    python入门(10)使用List和tuple list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可 ...

  2. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  3. Python学习笔记之字典

    一.创建和使用字典 1.创建字典 phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'} 2.dict,通过映射创建字典 >>> ...

  4. python入门笔记

    创建变量 python的变量不需要声明数据类型. >>> fred=100 >>> print (fred) 100 >>> fred 100 创 ...

  5. python学习笔记10(Python的内存管理)

      用这张图激励一下自己,身边也就只有一位全栈数据工程师!!! 32. Python的内存管理 1. 对象的内存使用 对于整型和短字符串对象,一般内存中只有一个存储,多次引用.其他的长字符串和其他对象 ...

  6. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  7. Python入门笔记(13):列表解析

    一.列表解析 列表解析来自函数式编程语言(haskell),语法如下: [expr for iter_var in iterable] [expr for iter_var in iterable i ...

  8. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  9. Python入门笔记——(2)列表和元组

    一.序列 python包含6种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.序列中每个元素被分配一个序号即索引,第一个索引为0,第二个为1,以此类推.也可以 ...

随机推荐

  1. 简明易懂的call apply

    在iteye看到一篇对call解释得相当简明易懂,觉得得宣传一下 : http://uule.iteye.com/blog/1158829 一.方法的定义 call方法: 语法:call([thisO ...

  2. js去掉html标签和去掉字符串文本的所有的空格

    去掉html标签的js <script> function delHtmlTag(str){  return str.replace(/<[^>]+>/g,"& ...

  3. [转]Android 超高仿微信图片选择器 图片该这么加载

    快速加载本地图片缩略图的方法: 原文地址:Android 超高仿微信图片选择器 图片该这么加载 其示例代码下载: 仿微信图片选择器 ImageLoader

  4. Linux 导入epel源

    rpm -ivh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh http:// ...

  5. [原]unity5 AssetBundle打包

    本文unity版本5.1.3 一.现有的打包教程: 1.http://liweizhaolili.blog.163.com/blog/static/16230744201541410275298/ 阿 ...

  6. Android QQ空间浏览图片动画特效的实现(※)

    1 http://blog.csdn.net/yangblocker/article/details/12680247 2 photoview 3 nineoldandroid

  7. 查询反模式 - GroupBy、HAVING的理解

    为了最简单地说明问题,我特地设计了一张这样的表. 一.GROUP BY单值规则 规则1:单值规则,跟在SELECT后面的列表,对于每个分组来说,必须返回且仅仅返回一个值. 典型的表现就是跟在SELEC ...

  8. Nginx模块开发时unknown directive "echo"的处理

    实际上,Nginx并没有echo这个指令,所以你贸然使用时,自然会提示说无法识别的指令,处理方法有两个: 方法一是: 从下面连接下载echo-nginx-module模块并安装: https://gi ...

  9. #ifdef 和 #if defined 的区别 -- 转

    #ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB) xxxxxxxxx #e ...

  10. 【原创】试用十天被Pass所带来的启示

    试用十天被Pass所带来的启示   招聘是门学问,很多人在研究,也有很多方案,不过面对人员难聘问题,很多方法又不灵了.于是我们采用了降低标准方案,扩招进来一些人员,于是问题又来了,想不想听我亲身经历的 ...