Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819733
  • 博文数量: 97
  • 博客积分: 3042
  • 博客等级: 中校
  • 技术积分: 1610
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:48
文章存档

2015年(1)

2014年(3)

2013年(4)

2012年(43)

2011年(44)

2010年(2)

分类: LINUX

2011-11-13 09:37:29

在开发过程中通常要对字典进行排序,复制等操作,和列表一样,字典的排序也采用sorted()函数,字典的复制除了可以使用update()函数外,还可以使用copy()函数,但是得注意二者之间的区别。
 
字典的排序
先来演示字典的排序函数sort()的使用:
dict = {"a":"apple","b":"banana","g":"grape","c":"oreage"}
print dict
#按照key进行排序。items可以用于字典的遍历,返回(key,value)的序列,lampda用于创建匿名函数,并返回计算结果,d[0]表示key
print sorted(dict.items(), key=lampda d:d[0])
#按照value进行排序。同样d[1]表示value
print sorted(dict.items(), key=lampda d:d[1])
 
字典的复制
字典的复制前面用的是update函数,这个方法是将字典A中的数据复制到字典B中,且字典中原有的数据保持不变,从而实现了字典B中数据的扩充。但是sorted不同,将字典A中的数据复制到字典B中,update会清除掉字典B中原有的数据。另外copy函数实现的是字典的浅拷贝,deepcopy函数用于实现深拷贝。
下面演示copy函数的使用
dict ={"a":"apple","o":"orange"}
dict2 = {"g":"grape","b":"banana"}
dict2 = dict.copy()
print dict2
dict2输出:{"a":"apple","o":"orange"}
浅拷贝只是复制数据,数据的引用并没有被复制,因此新的数据和旧的数据使用同一块内存块,深拷贝则不一样,它拷贝对象内部所有数据和引用,相当于C语言中指针的作用。例如:字典B浅拷贝字典A中的数据,如果字典B中的数据发生修改,字典A中的数据也将发生变化;但是如果字典B深拷贝字典A中的数据,则即使B中的数据变了,A中也不会变。
下面演示深拷贝和浅拷贝:
import copy
dict ={"a":"apple","o":"orange"}
dict2 ={"b":"banana","p":"pear"}
#copy.deepcopy等价于dict.deepcopy
dict2 = copy.deepcopy(dict)
#copy.copy 等价于dict.copy
dict3 = copy.copy(dict)
dict2["a"]="watermelon"
print dict
dict3["a"]="watermelon"
print dict
阅读(14850) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

网络安全服务2011-11-25 16:30:28

hi