注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 

日志

 
 

字典  

2011-01-25 20:19:36|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

字典是Python中重要的数据类型,字典是由“键 - 值”对组成的集合,字典中的值通过键来引用。

 

1.1字典的创建

创建字典的格式如下:

dictionary_name = key1value1 key2value2,。。。}


示例代码:

字典 - Fly - 从C开始

输出:

{'a': 'apple', 'b': 'banana', 'f': 'fuck'}

apple

注:

1.代码中书写的顺序不是字典实际存储的顺序,字典将根据每个元素的Hashcode值进行排列。

2.字典的键是区分大小写的。

 

1.2字典的访问

字典的访问和元组,列表有所不同,元组和列表是通过数字索引来获取对应的值,而字典是通过key值获取相应的value值。

字典的访问格式如下:

字典 - Fly - 从C开始
 

字典的添加,修改:

字典 - Fly - 从C开始

如果索引“m”不在字典的key列表中,字典将添加一条新的映射(mmzf);如果key列表中已经存在“m”,那么就直接修改m键所对应的value值。

 

字典的删除:

字典没有remove()方法。字典元素的删除可以使用内建函数del()实现。

字典也可以调用pop()函数弹出字典中的元素,但是使用方法与列表有所不同。

Dict.popk[,d]-> v

此时pop()函数必须指定相应的参数才能删除。其中,参数k表示字典的索引,如果字典Dict中存在索引k,返回值v等于Dict[k],如果字典中没有索引k,那么返回d

如果需要清空字典中所有的内容,可以调用字典的clear()函数。

实例代码:

字典 - Fly - 从C开始

输出:

fuck

{'c': 'cao', 'b': 'ban'}

{}

 

字典的遍历:

方法1

使用传统的for 。。。in。。。方法

字典 - Fly - 从C开始

输出:

dict[a]: apple

dict[b]: banana

dict[f]: fuck

 

方法2:

可以使用字典的item()方法实现字典的遍历操作,items()方法返回一个由若干元组组成的别表。

items()用法:

字典 - Fly - 从C开始

输出:

[('a', 'apple'), ('b', 'banana'), ('f', 'fuck')]

 由此可见,items()把字典中每对keyvalue组成一个元组,并把这些元组放在一个列表中返回。

调用items()方法遍历字典,示例代码:

字典 - Fly - 从C开始
 

 

方法3

使用字典的iteritems(),iterkeys(),itervalues()方法,这些方法将返回一个遍历器对象,通过这个对象实现遍历输出。

这些方法的声明如下:

字典 - Fly - 从C开始

 

示例代码:

字典 - Fly - 从C开始

输出:

<dictionary-itemiterator object at 0x00AF8BA0>   

dict[a]: apple

dict[b]: banana

dict[f]: fuck

 

dict[a]: apple

dict[b]: banana

dict[f]: fuck

 

1.3字典的方法

1.keys() values()方法

字典 - Fly - 从C开始

输出

3

['a', 'b', 'f']

['apple', 'banana', 'fuck']

 

2.get()方法

我们可以通过索引来获得键值,还有一种方法就是使用get()方法。

get()方法声明如下:

字典 - Fly - 从C开始

参数k表示字典中的键,如果k在字典中,get()方法将返回a[k],反之,将返回x

x默认为“None”。

 

示例代码:

字典 - Fly - 从C开始
 输出:

apple

Do not have this key!

 

3.update()方法

此方法用于将一个已经存在的字典中的键值对拷贝到另一个字典中,相当于一个合并函数。

声明如下:

a.update([b]) -> None

如果字典b中的键与字典a中的键相同,那么字典b中的值将覆盖a中的值。

示例代码:

字典 - Fly - 从C开始

输出:

{'a': 'aaa', 'c': 'ccc', 'b': 'banana'}

 

4.setdefault()方法

此方法可以创建新的元素,并设置默认值。

声明如下:

a.setdefault(k[, x]) ->a.get(k[,x])

 

setdefaule()get()的使用有些类似。参数k表示字典的键值,参数x表示a[k]的默认值。此参数可以省略,默认值为“None”。

参数k的值如果在字典a中,setdefault()将返回getkx)获得的结果。

参数k如果不在字典a中,字典a将添加新元素a[k],值为x,并调用getkx)返回参数x的值。

 

示例代码:

字典 - Fly - 从C开始

输出:

ccc

apple

   

1.4字典的排序与复制

1.字典的排序 – sorted()函数

字典 - Fly - 从C开始
 

2.字典的复制 – copy()函数

前面用到的update()函数可以把字典A中的元素复制到字典B中,而保留B中原有的元素。

copy()函数把字典A中的元素复制到字典B中,但是清除字典B中原有的元素。

函数声明:

a.copy() ->a shallow copy of a

copy()实现了字典的浅拷贝。

 

示例代码:

字典 - Fly - 从C开始

输出:

{'e': 'eee', 'd': 'ddd'}

{'e': 'eee', 'd': 'ddd'}

 

3.浅拷贝和深拷贝

Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。

1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy
深拷贝 拷贝对象及其子对象

 

浅拷贝只复制数据,数据的引用没有被复制,因此新的数据和旧的数据使用同一块内存空间。而深拷贝是拷贝对象内部所有的数据和引用。

例如:字典B浅拷贝字典A中的数据,如果字典B中的数据发生添加,删除或者修改,那么A中的数据也将发生变化。相反,深拷贝就不会发生这样的事情。

 

示例代码:

字典 - Fly - 从C开始

输出:

a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]

b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]

c =  [1, 2, 3, 4, ['a', 'b', 'c']]

d =  [1, 2, 3, 4, ['a', 'b']]

 

  评论这张
 
阅读(245)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018