字典



数据类型划分:
不可变数据类型:元组、bool、int、str、 可哈希
可变数据类型:list、dict、set 不可哈希


字典dict:
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
dict的key必须是不可变类型,可哈希
dict的value:任意数据类型
特点:无序的

字典dict优点:二分查找去查询
存储大量的关系型数据
exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

dict = {'name':['felix.wang','wangqiuhua'],
'id':{'name_id':101,'e_name':'alina','c_name':'wangtiqin'},
True:1,
(1,2,3):'wuyiyi',
2:'二哥',
erge:2
}

一、字典的增:
1:dict['key'] = value 在原字典中无此 key 则增加,有则更改key的vlaue 无则加之,有则改之

exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict['Felix'] = 8888
dict
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': 8888}
dict['Felix'] = 9999
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': 9999}

2:dict.setdefault(key[, default])
原字典中有键 key不做任何改变,没有才增加
默认值为None

exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict.setdefault('Felix')
dict
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': None}
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': None}
dict.setdefault('Alina',9999)
dict
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': None,'Alina': 9999}

二、字典的删:
1.dict.pop按照键key去删除,连同key也一起删除
dict.pop(key[, default]),有返回值,按键去删除的值,如果没有key值,抛出异常

exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict.pop('Beth') 有返回值
'9102'
dict
{'Alice': '2341', 'Cecil': '3258'}

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict.pop('beth') 抛出异常 KeyError
dict.pop('beth',None)
dict.pop('beth','没有此键')
'没有此键'

2.dict.popitem()
Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。返回结果为元组
如果字典已经为空,却调用了此方法,就报出KeyError异常。

exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict.popitem()
'Cecil': '3258'
dict.popitem()
'Beth': '9102'
dict.popitem()
'Alice': '2341'

3.del dict(key) 删除指定key的键值对,无返回值,若在字典中无该key,则抛出异常

exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
del dict['Alice'] 无返回值
dict = {'Beth': '9102', 'Cecil': '3258'}
del dict['felix']
KeyError: 'felix' 无key 抛出异常

del dict 则表示删除该字典

4.dict.clear() 清空字典

exp:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict.clear() 清空该字典,字典为空
dict
{}

三、字典的改

1.dict['key'] = value 在原字典中无此 key 则增加,有则更改key的vlaue 无则加之,有则覆盖

2.a.update(b) 把字典b的键值对增加到字典a中,如果a中已经有b中的key,则把该key的值更改为b中key的值
就地修改
exp:
dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dic2 = {'Alice': '1234', 'Felix': '0828'}
dit2.update(dict1)
dic1
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dic2
{'Alice': '2341', 'Felix': '0828', 'Beth': '9102', 'Cecil': '3258'}

四、字典的查询
1.dic1[key] 查找key的值,没有抛出异常
dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dic1['Alice']
'2341
'
2.dic1.keys() -> 查找所有的key,返回所有key值组成1个列表

dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dic1.keys() -> 查找所有的key,返回所有key值组成1个列表
dict_keys(['Alice', 'Felix', 'Beth', 'Cecil'])

3.dic1.values() -> 返回value值组成1个列表
dict_values(['2341', '0828', '9102', '3258'])

4.dic1.items() -> 返回键值对,组成一个列表
dict_items([('Alice', '2341'), ('Felix', '0828'), ('Beth', '9102'), ('Cecil', '3258')])

5.dic1.get(key[, default]) -> 查找1个key的值,Return the value for key if key is in the dictionary, else default.
exp:
dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dic1.get('Alice')
'2341'

dic1.get('felix','没有')
'没有'
五、其他
1.len(dic) 返回字典键值对的个数

2.count()

3.key in d -> Return True if d has a key key, else False
dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
'Alice' in dic1 -> True
'Alince' in dic1 -> False

4.key not in d -> Equivalent to not key in d.

5.copy() -> Return a shallow copy of the dictionary.浅拷贝


6.字典的嵌套


交换
a = 1
b = 2 # a,b = 1,2
a,b = 2,1
a
2
b
1

a,b = [1,2],[3,4]
a
[1,2]
b
[3,4]

exp:
dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

for i in dic1: 等同于 for i in dic1.keys():
print(i)
Alice
Beth
Cecil

for j in dic1.values():
print(j)
2341
9102
3258

for k in dic1.items():
print(k)
[('Alice', '2341')
('Beth', '9102')
('Cecil', '3258')

for g,h in dic1.items():
print(g,h)
Alice 2341
Beth 9102
Cecil 3258






.
原文地址:https://www.cnblogs.com/Felix-DoubleKing/p/12074100.html