本节介绍Python中的字典:是另一种可变容器模型,且可存储任意类型对象

    (1)字典简介:

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

注意:键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    (2)字典的操作:

包括创建字典、访问字典元素、修改字典的值、删除字典指定元素,删除字典:

Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
#1.创建字典:
>>> dic={'name':'MenAngel','age':19,'sex':'男'};
>>> print dic
{'age': 19, 'name': 'MenAngel', 'sex': '\xc4\xd0'}
#2.修改字典中元素
>>> dic['name']='sunjimeng'
#3.访问字典中指定元素
>>> print dic
{'age': 19, 'name': 'sunjimeng', 'sex': '\xc4\xd0'}
>>> dic['name']
'sunjimeng'
>>> dic
{'age': 19, 'name': 'sunjimeng', 'sex': '\xc4\xd0'}
#4.删除字典中指定元素
>>> del dic['sex']
>>> dic
{'age': 19, 'name': 'sunjimeng'}
#5.删除字典中所有元素
>>> dic.clear()
>>> dic
{}
#6.删除字典
>>> del dic

    (3)字典键的特性:

注意:字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住:

2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行:

Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dic={'name':'MenAngel','age':19,'name':'sunjimeng'}
>>> dic
{'age': 19, 'name': 'sunjimeng'}
#键可以用数字,字符串,可以用元组
>>> dic[4]=346
>>> dic
{'age': 19, 4: 346, 'name': 'sunjimeng'}
>>> dic[('abc',20)]='sex'
>>> dic
{('abc', 20): 'sex', 'age': 19, 4: 346, 'name': 'sunjimeng'}
#但不能用列表
>>> dic[[20,]]=20
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

    (4)字典内置函数或方法:

1)字典内置函数:

#1.第一种字典初始化方式:
>>> dic1={}
>>> dic1['name']='MenAngel';
>>> dic1['age']=20;
>>> dic1['sex']='男';
#2.第二种字典初始化方式
>>> dic2={'name':'MenAngel','age':20,'sex':'男']
>>> dic1
{'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'}
>>> dic2
{'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'}
>>> cmp(dic1,dic2)
0
>>> len(dic1)
3
>>> str(dic1)
"{'age': 20, 'name': 'MenAngel', 'sex': '\\xc4\\xd0'}"
>>> type(dic1)
<type 'dict'>

2)Python字典的内置方法:

>>> dict1={'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'}
>>> dict2=dict1.copy()
>>> list1=dict1.keys()
>>> list2=dict1.values()
>>> dict1.has_key('name')
True
>>> dict1,dict2
({'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'}, {'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'})
>>> list1,list2
(['age', 'name', 'sex'], [20, 'MenAngel', '\xc4\xd0'])
>>> dict1['name']='sunjimeng'
>>> dict1,dict2
({'age': 20, 'name': 'sunjimeng', 'sex': '\xc4\xd0'}, {'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'})
>>> dict1.update(dict2)
>>> dict1,dict2
({'name': 'MenAngel', 'age': 20, 'sex': '\xc4\xd0'}, {'age': 20, 'name': 'MenAngel', 'sex': '\xc4\xd0'})
>>> dict.setdefault('abc','')
20
>>> dict1.setdefault('abc','')
''
>>> dict1.setdefault('abc','')
''
>>> dict1.items()
[('abc', ''), ('name', 'MenAngel'), ('age', 20), ('sex', '\xc4\xd0')]

Python学习进程(10)字典的更多相关文章

  1. Python学习进程

    1周第1天 主要是变量的学习(11月8日) 1.1 python安装(win和linux下)1.2 ipython安装及使用1.3 变量的定义1.4 变量赋值1.5 运算符(赋值.算术.关系.逻辑)1 ...

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

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

  3. Python学习4(字典的内存分布)

    1.字典:是python数据类型之一,字典通过花括号来包含数据项,字典的每个元素由2个部分组成,键:值,字典是根据键来找对应的值. data = {"name": "Et ...

  4. python学习(10)字典学习,写一个三级菜单程序

    学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...

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

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

  6. Python学习进程(12)模块

        模块让你能够有逻辑地组织你的Python代码段.     (1)python模块: 模块化的好处: 1.把相关的代码分配到一个模块里能让你的代码更好用,更易懂. 2.模块也是Python对象, ...

  7. Python学习进程(3)Python基本数据类型

        本节介绍在Python语法中不同的变量数据类型.     (1)基本数据类型: >>> a=10; >>> b=10.0; >>> c=T ...

  8. Python学习笔记之字典

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

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

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

随机推荐

  1. IDEA 2017破解 license server激活

    确保电脑在联网状态,在激活窗口选择license server 填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm. ...

  2. 创建Spring Boot项目的几种方式总结

    一.我们可以使用Spring Initializr来创建SpringBoot项目. Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构.虽 ...

  3. View拖拽 自定义绑定view拖拽的工具类

    由于工作需求,需要用到这种处理方法所以我就写了这个 废话不多说先看效果图 接下来就看代码吧 DragDropManager import android.app.Activity; import an ...

  4. java 窗体

    import javax.swing.*; /** * 一个简单的java窗体例子 */ public class Test { public static void main(String[] ar ...

  5. html 模版

    使用后台开发语言的都很了解语言的动态性给开发带来的好处,PHP,aspx,jsp页面都可以直接使用相应的语法和变量,输出的事就交给解释器或编译器了,用起来方便快捷,但需要额外的解释工作: 例如php模 ...

  6. .Net 单例模式(Singleton)

    每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中.每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业 ...

  7. caffe小问题汇总(持续更新)

    PS:所有问题均在caffe-windows下产生 1.为什么AlexNet中,InnerProduct_Layer(fc8)层的输出可以直接作为Accuracy_Layer层的输出? 答:首先,我们 ...

  8. 【转】hibernate中的映射文件xxx.hbm.xml详解总结

    一.Hibernate映射文件的作用: Hibernate映射文件是Hibernate与数据库进行持久化的桥梁 二,Hibernate映射文件主要内容:     (1).映射内容的定义: Hibern ...

  9. 【转】NAS、DAS和SAN存储的特点及主要区别

    接触过存储设备的朋友应该对NAS.DAS和SAN存储不陌生,作为目前三种常见的存储方式,被广泛应用于企业存储设备中,那么NAS.DAS和SAN这三种存储分别有什么特点,又有何区别呢? 一.NAS存储特 ...

  10. SPDY

    转载SPDY 是什么 SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 SPDY 成为正式标准(现为互联网草案).SPDY 协议旨在通过压缩.多路复用和优 ...