#!/usr/bin/env python
#key-value
info = {
'stu1101':"Tentlan wu",
"stu1102":"Longze Luola",
"stu1103":"Maliya Xiaoze",
}
#字典的循环
for key in info: #效率高,直接通过key取值 value
print(key,info[key])
for k,v in info.items(): #结果同上,但是先需要把字典转换成列表,在取值,如果字典数据量小没问题
print(k,v) #字典数据量巨大的时候,效率非常低,多了一个转换过程
info_b = {
'stu1101':"jfsu",
123:456
}
info.update(info_b) # 作用是,两个表合并,当有交叉的时候,就更新,没有交叉就把info_b表合并到info中,创建新的key value
#print(info)
print(info.items()) #把字典转成列表
c = dict.fromkeys([5,6,7],"test") #初始化一个新的字典
#有个坑 fromkeys的,类似于 浅copy
c = dict.fromkeys([6,7,8],[1,{"user":"susan"},{"age":"13"}])
c[7][2]['age'] = '23' #实际上指向修改7里面第三个元素的值,结果修改影响到了6,8,三个key指向同一份内存数据。
print(c)
print(info)
info["stu1101"] = "武藤兰" #修改字典
info["stu1104"] = "苍老师" #增加字典
#del info["stu1101"]
#info.pop("stu1101") #标准删除方法
#del info["stu1101"] #换个删除方法
info.popitem() #随机删除
print(info)
#查找值
#info]["stu1104"] #没有的值会报错
print(info.get('stu1104')) #没有值就显示none,不会报错
print('stu1103' in info) #info.has_key('stu1103') python 2.x 中方法
#多级字典的嵌套操作
av_catalog = {
"欧美":{
"www.youporn.com":["免费多","质量一般"],
"www.pornhub.com":["也很大","质量比YP好"],
"letmedothistoyou.com":["多是自拍,高清","更新慢"],
"x-art.com":["质量高","全部收费"]
},
"日韩":{
"tokyo-hot":["不清真","收费"]
},
"港台":{
"1024":["for free",'好人一生平安']
}
}
av_catalog["日韩"]["tokyo-hot"][1] = "收费" #修改
print(av_catalog.values())
print(av_catalog.keys())·
av_catalog.setdefault("大陆",{"2048":[1,2]}) # 增加一个字典值
av_catalog.setdefault("港台",{"4096":[3,4]}) # 去字典里面找 港台,如果能取到,就显示,取不到,就增加一个港台的key -value
print(av_catalog)
合并两个字典
dict1={1:[1,11,111],2:[2,22,222]}
dict2={3:[3,33,333],4:[4,44,444]}
合并两个字典得到类似
{1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444]}
方法1:
dictMerged1=dict(dict1.items()+dict2.items())
方法2:
dictMerged2=dict(dict1, **dict2)
方法2等同于:
dictMerged=dict1.copy()
dictMerged.update(dict2)