第二周 第12节字典的使用 (字典和列表是最常用的两种数据类型)

字典是key value 的数据类型,是无序的

info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
print(info)
{'stu1101': 'tenglan', 'stu1102:': 'lonze', 'stu1103': 'xiaoze'}

字典是无序的,没有下标,通过key取值

 


info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
print(info['stu1101'])
取值:tenglan

 


info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
info['stu1103']='肖泽'
info['stu1104']='xiaoming'
print(info)


如果存在就修改,如果不存在就增加
{'stu1101': 'tenglan', 'stu1102:': 'lonze', 'stu1103': '肖泽', 'stu1104': 'xiaoming'}

 

删除:
info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
del info['stu1101']

print(info)


{'stu1102:': 'lonze', 'stu1103': 'xiaoze'}

 

删除2
info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
info.pop('stu1101')
print(info)

随机删除
info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
info.popitem()
print(info)

{'stu1101': 'tenglan', 'stu1102:': 'lonze'}


取数据:
info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
print(info.get('stu1101'))
tenglan

 

判断是否在这个字典里,在就取,不在就创建
info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}

print('stu1101'in info)

True


2、多级字典的嵌套
av_catalog={'欧美':{'www.youborn.com':['很多免费的,世界最大的','质量一般'],
'www.pornhub.com':['很多免费的,也很大','质量比yourborn高点'],
'letmedothistoyou,com':['多是自拍,高质量的图片很多','资源不多,更新慢'],
},
'日韩':{'tokoy-hot':['质量不清楚,个人已经不喜欢日韩范了','听说是收费的了']
},
'大陆':{'1024':['全部免费,真的,好人一生平安','服务器在国外,慢']
}

}
av_catalog['大陆']['1024'][1]="可以在国内做镜像"
print(av_catalog)

 

{'欧美': {'www.youborn.com': ['很多免费的,世界最大的', '质量一般'],
'www.pornhub.com': ['很多免费的,也很大', '质量比yourborn高点'],
'letmedothistoyou,com': ['多是自拍,高质量的图片很多', '资源不多,更新慢']},
'日韩': {'tokoy-hot': ['质量不清楚,个人已经不喜欢日韩范了', '听说是收费的了']},
'大陆': {'1024': ['全部免费,真的,好人一生平安', '可以在国内做镜像']}}

Process finished with exit code 0

 

3、创建
av_catalog={'欧美':{'www.youborn.com':['很多免费的,世界最大的','质量一般'],
'www.pornhub.com':['很多免费的,也很大','质量比yourborn高点'],
'letmedothistoyou,com':['多是自拍,高质量的图片很多','资源不多,更新慢'],
},
'日韩':{'tokoy-hot':['质量不清楚,个人已经不喜欢日韩范了','听说是收费的了']
},
'大陆':{'1024':['全部免费,真的,好人一生平安','服务器在国外,慢']
}

}
av_catalog.setdefault("台湾",{"www.baidu.com":[1,2]})#先去字典里查,没有就创建,有就返回原来的值
print(av_catalog)

 

 

{'欧美': {'www.youborn.com': ['很多免费的,世界最大的', '质量一般'], 'www.pornhub.com': ['很多免费的,也很大', '质量比yourborn高点'], 'letmedothistoyou,com': ['多是自拍,高质量的图片很多', '资源不多,更新慢']},
'日韩': {'tokoy-hot': ['质量不清楚,个人已经不喜欢日韩范了', '听说是收费的了']},
'大陆': {'1024': ['全部免费,真的,好人一生平安', '服务器在国外,慢']},
'台湾': {'www.baidu.com': [1, 2]}}

Process finished with exit code 0

 

 

 

 

av_catalog={'欧美':{'www.youborn.com':['很多免费的,世界最大的','质量一般'],
'www.pornhub.com':['很多免费的,也很大','质量比yourborn高点'],
'letmedothistoyou,com':['多是自拍,高质量的图片很多','资源不多,更新慢'],
},
'日韩':{'tokoy-hot':['质量不清楚,个人已经不喜欢日韩范了','听说是收费的了']
},
'大陆':{'1024':['全部免费,真的,好人一生平安','服务器在国外,慢']
}

}
av_catalog.setdefault("大陆",{"www.baidu.com":[1,2]})
print(av_catalog)


{'欧美': {'www.youborn.com': ['很多免费的,世界最大的', '质量一般'], 'www.pornhub.com': ['很多免费的,也很大', '质量比yourborn高点'], 'letmedothistoyou,com': ['多是自拍,高质量的图片很多', '资源不多,更新慢']},
'日韩': {'tokoy-hot': ['质量不清楚,个人已经不喜欢日韩范了', '听说是收费的了']},
'大陆': {'1024': ['全部免费,真的,好人一生平安', '服务器在国外,慢']}}

Process finished with exit code 0


4 update
info={'stu1101':'tenglan','stu1102':'lonze','stu1103':'xiaoze'}
b={"stu1101":"alex","1:3":"2:5"}
info.update(b)#两个字典合并,相同存在的就覆盖,都不存在的就一起合并
print(info)

{'stu1101': 'alex', 'stu1102': 'lonze', 'stu1103': 'xiaoze', '1:3': '2:5'}

 

 


info={'stu1101':'tenglan','stu1102:':'lonze','stu1103':'xiaoze'}
print(info.items())#把字典转换成列表


dict_items([('stu1101', 'tenglan'), ('stu1102:', 'lonze'), ('stu1103', 'xiaoze')])


5、fromkeys

 

c=dict.fromkeys([6,7,8],"test")
print(c)


{6: 'test', 7: 'test', 8: 'test'}

 

 

c=dict.fromkeys([6,7,8],[1,{'name':'alec'},444])
print(c)
c[7][1]['name']='jack'
print(c)


{6: [1, {'name': 'alec'}, 444], 7: [1, {'name': 'alec'}, 444], 8: [1, {'name': 'alec'}, 444]}
{6: [1, {'name': 'jack'}, 444], 7: [1, {'name': 'jack'}, 444], 8: [1, {'name': 'jack'}, 444]} 把所有的都改了,就像浅copy一样

6循环

info={'stu1101':'tenglan','stu1102':'lonze','stu1103':'xiaoze'}
for i in info:
print(i)


只打印key

stu1101
stu1102
stu1103

 

如果想打印value


循环方法1:
info={'stu1101':'tenglan','stu1102':'lonze','stu1103':'xiaoze'}
for i in info:
print(i,info[i])

stu1101 tenglan
stu1102 lonze
stu1103 xiaoze

 


循环方法2:
info={'stu1101':'tenglan','stu1102':'lonze','stu1103':'xiaoze'}
for k, v in info.items():#不高效,没有第一种循环高效,因为item是把字典转换成列表,数据量不大的时候感觉不出,数据量大的话,字典转换成列表就要转很久
print(k,v)


stu1101 tenglan
stu1102 lonze
stu1103 xiaoze

 

posted on 2019-04-14 13:10  googleWang  阅读(196)  评论(0编辑  收藏  举报

导航