Python之字典
字典是Python中,唯一具有映射关系的数据类型。
字典的查询效率高于列表。
字典的复杂度为1,列表的复杂度对N。但是,字典的存储大于列表。
特性:无序
用来存储详细信息:
存储方式: key:value
键 :值
通过键,找到值。用大括号 “ { } ” 表示。键是唯一且不可变数据类型。
name = { 'key' : ' value' }
字典里可以套字典,将值在写为字典就好了。
name = { 11111:{"name":"George","age":26}, 22222:{"name":'wang',"age":27} }
字典的取值:在字典的名字中加键就好了。name [ key ] ,如果值也是字典,而有需要去值里字典的值,就name [ key ] [ key ]......就好。
name = { 11111:{"name":"George","age":26}, 22222:{"name":'wang',"age":27} } print(name[11111])
print(name[11111]["name"])
字典里面也可以有列表:
name = { 11111:{"name":"George","age":26}, 22222:{"name":'wang',"age":27}, 33333:["hahaha"], }
改操作:
name[11111]["name"] = "John" #改字典的值 name[33333][0] = "aaa" #改列表的值
插入:
name[444] = "mike" name[555] = {"mike":22} print(name)
update,更新
name1 = { 111:{"name":"aa"}, 222:{"name":"bb"}, 333:{"name":"cc"}, } name2 = { 111:{"name":"dd"}
444:{"name":"gg"} } name1.update(name2) #实质是将两个字典合并 print(name1) ------------结果---------- {111: {'name': 'dd'}, 222: {'name': 'bb'}, 333: {'name': 'cc'},444:{'name':'gg'}}
增操作:
name[33333][0] = "aaa" name[33333].append(26) print(name)
{11111: {'name': 'George', 'age': 26}, 22222: {'name': 'wang', 'age': 27}, 33333: ['aaa', 26]}
删操作:
pop
print(name.pop(33333)) #删掉指定的key,并返回相应的值 print(name)
['hahaha'] #返回key相应的值 {11111: {'name': 'George', 'age': 26}, 22222: {'name': 'wang', 'age': 27}}
如果key不存在,报错。如果不想报错,就赋予一个默认值None
print(name.pop(55555,None)) #删掉指定的key,并返回相应的值 print(name) ---------结果--------- None {11111: {'name': 'George', 'age': 26}, 22222: {'name': 'wang', 'age': 27}, 33333: ['hahaha']}
popitem 随机删除
print(name.popitem()) #随机删除,并返回删的值 ---------结果--------- (33333, ['hahaha'])
del name [ key ]
del name[ 33333 ]
查操作:
print(name) #查所有 print(name[33333]) #查指定的 print(name.get(11111)) #推荐用get print(name.get(4))
print(1111 in name) #判断是否在字典里有这个key
print(name.key())
print(name.value())
字典循环:
for i in name: print(i,name[i]) ------------结果---------- 11111 {'name': 'George', 'age': 26} 22222 {'name': 'wang', 'age': 27} 33333 ['hahaha']
for k,v in name.items(): # 不要用,因为效率低 print(k,v) ----------结果---------- 11111 {'name': 'George', 'age': 26} 22222 {'name': 'wang', 'age': 27} 33333 ['hahaha']
for i in name.items(): print(i) -------------结果-------- (11111, {'name': 'George', 'age': 26}) (22222, {'name': 'wang', 'age': 27}) (33333, ['hahaha']) 结果的值有小括号
fromkeys:初始化一个字典
info ={} info = info.fromkeys([1,2,3],"Tesla") #创建字典,并将value的值设为Tesla,也可以不写,默认是None。 print(info) ----------结果----------- {1: 'Tesla', 2: 'Tesla', 3: 'Tesla'}