dictionary的使用

来源:互联网 发布:淘宝店铺起名软件 编辑:程序博客网 时间:2024/06/06 13:07
#!/usr/bin/python
#-*- coding:utf8 -*-
import copy

test_dict = {"Jack":22, "John":21, "Helen":20, "Smith":34}
#打印所有的字典
print test_dict

print test_dict["Jack"]


test_dict1 = {1:"One", 2:"two", 3:"three", 4:"four"}

print test_dict1

print test_dict1[1]
#字典里面是不允许以下方式填充字典的
#test_dict2 = {test_dict}
#print test_dict2

#填充字典
test_dict2 = {"a":"absolutely", "bs":{"b":"because","s":"sleep"},"c":["cat","cyling"]}
print test_dict2
print test_dict2["a"]
print test_dict2["bs"]
print test_dict2["c"]


#向字典中添加数据
test_dict["Bruce"] = 56
print test_dict
#可以看到放到了最开始的位置

#删除一个数据
del(test_dict["Bruce"])
print test_dict

#也可一弹出一个数据
test_dict.pop("Jack")
print test_dict
#此时Jack就没有了

#清空一个字典
test_dict2.clear()
print test_dict2
print id(test_dict2)
#清空一个字典 内存地址还在 说明只与数据有关


#字典的遍历
for i in test_dict:
    print "test_dict[%s]" %i, test_dict[i]



#通过items方法 进行遍历
print test_dict.items()

for k,v in test_dict.items():
    print k,": ",v

#还有一个iteritems方法
print test_dict.iteritems()

for k,v in test_dict.iteritems():
    print k,":",v

#现在还有一种iterkeys, itervalues方法
print
for k,v, in zip(test_dict.iterkeys(), test_dict.itervalues()):
    print k,":",v
#zip主要起到一中粘合的作用


#找到所有的keys
#找到所有的values
print test_dict.keys()
print test_dict.values()


#字典还有更新的方法 (用一个去更新另一个)
test_dict3 = {"key1":"value1", "key2":"value2"}
test_dict4 = {"key3":"value3", "key4":"value4"}
test_dict3.update(test_dict4)
print test_dict3  #无序的


test_dict4.setdefault("key","value")
print test_dict4
#此时只会在test_dict4中添加一项

print
print
test_dict4.setdefault("key3","SB")
print test_dict4
#个人觉得这个函数没啥用


#进行排序
print sorted(test_dict.items(), key=lambda item:item[0])
print sorted(test_dict.items())


#进行数据的拷贝(这里有浅拷贝和深拷贝)
print
print
#首先使用类自带的函数
test_dict5 = test_dict.copy()
print id(test_dict)
print test_dict
print id(test_dict5)
print test_dict5

print
print
test_dict6 = copy.copy(test_dict)
print id(test_dict6)
print test_dict6

print
print
test_dict7 = copy.deepcopy(test_dict)
print id(test_dict7)
print test_dict7
#以上这些分析 似乎在整个大体内存地址上看不出什么名堂


#现在讨论下内部的情况
fruit_dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
fruit_dict2 = copy.deepcopy(fruit_dict)
fruit_dict3 = copy.copy(fruit_dict)
fruit_dict2["b"]["g"] = "orange"
print fruit_dict
fruit_dict3["b"]["g"] = "orange"
print fruit_dict
#深度拷贝不会影响原来的值 但是浅拷贝会影响原来的值
print id(fruit_dict["b"])
print id(fruit_dict2["b"])
print id(fruit_dict3["b"])
#id值表明先拷贝不会改变内存的地址,深拷贝会改变
0 0