字典{ }
字典是一种key-value的数据类型
定义:{key1:value1,key2:value2}
1、键与值用冒号“:”分开;
2、项与项用逗号“,”分开;
info = { "stu1101":"jack", "stu1102":"lily", "stu1103":"peiqi" }
特性:
1.key-value结构
2.key必须可hash、且必须为不可变数据类型、必须唯一,不能重复
3.可存放任意多个值、可修改、可以不唯一
4.无序
5.查找速度快
只有当元组内的所有元素都为不可变类型的时候,才能成为字典的key
常见操作
创建
dic.keys() 返回一个包含字典所有KEY的列表
dic.values() 返回一个包含字典所有value的列表
dic.items() 返回一个包含所有(键,值)元祖的列表
dic.iteritems()、dic.iterkeys()、dic.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表
info = { "1101":"小萌", "1102":"小智", "1103":"小强" }
增加
dic.['new_key'] = 'value'
dic.setdefault( key, None),如果字典中不存在key键,由dic.[key] = default 为他赋值
info = { "1101":"小萌", "1102":"小智", "1103":"小强" } info["1104"] = "小王"#增加原字典中没有的key print (info)
输出
{'1101': '小萌', '1102': '小智', '1103': '小强', '1104': '小王'}
修改
增加新键/值对,修改或删除已有键/值
dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值
dic.update(dic2)将字典dic2的键值对添加到字典dic中
info = { "1101": "小萌", "1102": "小智", "1103": "小强", '1104': '小王' } info["1103"] = "小张"#对制定key重新赋值 print (info)
输出
{'1101': '小萌', '1102': '小智', '1103': '小张', '1104': '小王'}
查找
dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
dic["key"],返回字典中key对应的值,若key不存在字典中,则报错
info = { "1101": "小萌", "1102": "小智", "1103": "小强", '1104': '小王' } print(info.get("1102"))#获取指定key,对应的值 print(info.get("1108"))#获取指定key,对应的值,若没有返回None print(info["1103"])#获取 没有会报错
输出
info = {
"1101": "小萌",
"1102": "小智",
"1103": "小强",
'1104': '小王'
}
删除
dic.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
dic.clear() 删除字典中的所有项或元素;
dic.poitem())#随机删除一个,好像默认删除最后一个
del dic[ ] #删除指定键值
info = { "1101": "小萌", "1102": "小智", "1103": "小强", '1104': '小王', '1105': '小刘', "1106": "lily" } print(info.pop("1102"))#删除指定key和对应的值 print(info)#获取指定key,对应的值,若没有返回None print(info.popitem())#随机删除一个,好像默认删除最后一个 del info["1106"]#删除指定键值 info.clear()#删除字典中的所有 print(info)
输出
小智
{'1101': '小萌', '1103': '小强', '1104': '小王'}
{}
判断
“key” in dic #判断某key是否在字典里
info = { "1101": "小萌", "1102": "小智", "1103": "小强", '1104': '小王' } print("1102" in info)#判断某key是否在字典里
循环
for k in dic.keys()#循环字典key
for k,v in dic.items() #循环字典key和value
for k in dic #循环字典key
info = { "1101": "小萌", "1102": "小智", "1103": "小强", '1104': '小王' } for k in info.keys(): # 循环字典key print("@", k) for k, v in info.items(): # 循环字典key和value print(k, v, "-") for k in info: # 循环字典key print("!", k) for k in info:#循环key和值 , print(k, info[k])
输出
@ 1101
@ 1102
@ 1103
@ 1104
1101 小萌 -
1102 小智 -
1103 小强 -
1104 小王 -
! 1101
! 1102
! 1103
! 1104
1101 小萌
1102 小智
1103 小强
1104 小王
长度
len(dic)
info = { "1101": "小萌", "1102": "小智", "1103": "小强", '1104': '小王' } print(len(info))
输出
4
多级字典嵌套
info = { "大学":{ "1001": ["lily",22], "1002": ["peiqi",23], "1003": ["jack",24], "1004":["jerry",23] }, "中学":{ "2001":["nicole",16] }, "小学":{ "3001":["angel","9"] } } info["小学"]["3001"][1] += ",friend" print(info["小学"]["3001"])
输出:
['angel', '9,friend']
dic.values() #打印所有value
dic.keys() #打印所有key
dic.items()#把字典转成列表,把键和值转为元组
dic.update()#扩展 把两个字典合成一个。若有相同key,有对应值覆盖,没有创建
dic.setdefault()#如果有这个key,保留原值,如果没有,就创建
dic.fromcase()#生成字典,批量生成