Python之字典

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'}
原文地址:https://www.cnblogs.com/george92/p/8969550.html