Python学习—字典

Python中的图——字典

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值对key-value对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中,键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组,列表集合就不可以。

1.创建字典

变量名 = {字典元素}

>>> dict = {‘AA‘:‘001‘,‘BB‘:‘002‘,‘CCC‘:3,4:4}
>>> dict
{‘AA‘: ‘001‘, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4}
>>> dict1 = { ‘abc‘: 456 }
>>> dict1
{‘abc‘: 456}
>>> dict2 = { ‘abc‘: 123, 98.6: 37 }
>>> dict2
{‘abc‘: 123, 98.6: 37}

2.查找(访问字典元素):dict[key]

字典不能像列表一样通过索引值去访问元素,字典查找值是把相应的键放入到方括号中去访问值。如果用字典里没有的键访问数据,会报错。

>>> dict
{‘AA‘: ‘001‘, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4}
>>> dict[‘AA‘]
‘001‘
>>> dict[4]
4
>>> dict[‘xxx‘]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: ‘xxx‘

第2种方法:通过dict提供的get()方法。
如果key不存在,不会报错也不会返回任何信息,但是也可以自己指定不存在时的返回值。

>>> dict
{‘AA‘: 1, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4, ‘DDD‘: 889, ‘new‘: ‘新的键值对‘}
>>> dict.get(‘BB‘)
‘002‘
>>> dict.get(‘NO‘)
>>> dict.get(‘NO‘,-1)
-1
>>> dict.get(‘NO‘,‘不存在‘)
‘不存在‘

3.添加元素

向字典添加新内容的方法是增加新的键/值对

>>> dict[‘DDD‘] = 889
>>> dict
{‘AA‘: ‘001‘, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4, ‘DDD‘: 889}
>>> dict[‘new‘] = ‘新的键值对‘
>>> dict
{‘AA‘: ‘001‘, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4, ‘DDD‘: 889, ‘new‘: ‘新的键值对‘}

4.修改元素

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉,也就是修改了元素的值。
同样修改不存在的键会报错。

>>> dict[‘AA‘] = 1
>>> dict
{‘AA‘: 1, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4, ‘DDD‘: 889, ‘new‘: ‘新的键值对‘}

5.删除元素

del dict[key]
删除dict字典中键key对应的那对键值对。

>>> dict
{‘AA‘: 1, ‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4, ‘DDD‘: 889, ‘new‘: ‘新的键值对‘}
>>> del dict[‘AA‘]
>>> dict
{‘BB‘: ‘002‘, ‘CCC‘: 3, 4: 4, ‘DDD‘: 889, ‘new‘: ‘新的键值对‘}

del也可以用来删除整个字典,删除后字典就不存在了。

>>> dict2
{‘abc‘: 123, 98.6: 37}
>>> del dict2
>>> dict2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name ‘dict2‘ is not defined    #删除后,字典不存在,访问不存在的对象会报错

清空字典:dict.clear()
只是删除字典里的所有元素即键值对,字典仍然存在,为空字典。

>>> dict1
{‘abc‘: 456}
>>> dict1.clear()
>>> dict1
{}

dict内部存放的顺序和key放入的顺序是没有关系的。

使用字典,再查找数据时,速度会很快。因为dict的实现原理和查汉语字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
dict就是第二种实现方式,给定一个名字,比如‘Michael‘,dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。
你可以猜到,这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。

和list比较,dict有以下几个特点:
1.查找和插入的速度极快,不会随着key的增加而变慢;
2.需要占用大量的内存,内存浪费多。
而list相反:
1.查找和插入的时间随着元素的增加而增加;
2.占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。

原文地址:http://blog.51cto.com/13885935/2161675

时间: 2024-08-29 06:47:45

Python学习—字典的相关文章

python学习 &nbsp; &nbsp; 字典

Python学习   字典 1)字典的了解 1.    字典是python中唯一的映射类型(哈希表) 2.    字典对象时可变的,但是字典的键必须使用不可变对象,并且在一个字典中可以使用不同的类型的键值. 3.    keys()或者是values()返回列表中或者值列表 4.    items()返回包含键值对应的元祖 1)  定义字典的方法和使用方法 1.字典名={key:values,key1:values1} 2.取值时: 字典名[key](取出与key相对应的values) 3.可以

python学习-字典1

第一次写技术博客,也是刚刚申请成功,所以要先感谢博客园的相关工作人员.开发做了多年,直到今年才开始学习python,习惯了C.C++的数据格式,所以一开始就被python数据类型中的字典所吸引.基础的知识有很多同仁都写过了,我只是通过我学习中的一道作业题来说明一下. 题目:三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 返回上一级菜单和顶部菜单 4. 菜单数据保存在文件中" 实现代码: #准备一个三级菜单 menu_list = {&

Python学习字典.基础三

元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中要定义的元组中只有一个元素需要再元素后面加逗号,用来消除数学歧义.例 t=(1,) 字典 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中. 键必须是唯一的,但值则不必(只可以取任何数据类型,但键必须不可变) 例子: #coding=utf-8 #!/usr/bin/python student={1:'ja',2:'qw'

python学习-字典的增删改查

1 dic1 = {'name':'paoche', 2 'age':19, 3 'active':['beijing','hebei'], 4 'id':{'wangyi':'skmdod008b', 5 'sina':'skmdod00bc' 6 } 7 } 一.字典的增 方法1:直接新增键值对,若无此键则新增键值对,有此键则修改值 1 dic1['high'] = 180 #没有键值对,则追加 2 dic1['age'] = 30 #有键值,则修改 3 print(dic1) 4 "&qu

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

python学习笔记4:字典

python学习笔记4:字典 总结:字典是可变变量: 字典是不排序的,所以不能像列表,元组,字符串一样,切片 1.定义字典dict  --花括号{},字典的只是key-value形式 比如:stu={'name':'zhangying','age':18,'score'=99} 2.key取值,get()方法取值 1)dictname[key] , 取key对应的value值,如果不存在,报错 2)dictname.get(key) , 取key对应的value值,如果不存在,返回none:还可

Python学习总结之四 -- 这就是Python的字典

字典原来是这么回事儿 Python学习到现在,我们已经知道,如果想将值分组到结构中,并且通过编号对其进行引用,列表就可以派上用场.不过,今天,我们将学到一种通过名字引用值的数据结构,应该知道这种数据类型叫做映射.字典则是Python中唯一内建的映射类型,那么我们就来学习字典. 认识字典 字典是可变的,并且可以存储任意数量的Python对象.下面这个例子就是简单的字典类型: 1 phonebook={'zhangsan':'12345','lisi':'54321'} 2 print phoneb

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #