python对字典进行排序,复制等操作,和列表一样,字典的排序也采用sorted()函数,字典的复制除了可以使用update()函数外,还可以使用copy()函数,需要注意二者之间的
python对字典进行排序,复制等操作,和列表一样,字典的排序也采用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