字典
字典( dictionary)与列表类似,但不关心元素的顺序,因为它们不是通过像0或1的偏移量访问的。取而代之,每个元素拥有与之对应的互不相同的键(key),需要通过键来访问元素。键通常是字符串,但它还可以是 Python中其他任意的不可变类型:布尔型整型、浮点型、元组、字符串,以及其他一些在后面的内容中会见到的类型。字典是可变的,因此你可以增加、删除或修改其中的键值对。
使用{}创建字典
用大括号{ }将一系列以逗号,分隔开的键值对包裹起来即可进行字典的创建
>>> empty_dict = {} # 空字典
>>> empty_dict
{}
>>> user = {'name':'rison', 'age':'18', 'id':23231}
>>> user
{'name': 'rison', 'age': '18', 'id': 23231}
使用dict()转换
可以将双值子序列的序列转成字典
1 lol (list of two-item list 双值列表的列表 )
>>> lol = [['a','b'],['c','d'],['e','f']]
>>> dict(lol)
{'a': 'b', 'c': 'd', 'e': 'f'}
2 lot
>>> lot = [('a','b'),('c','d'),('e','f')]
>>> dict(lot)
{'a': 'b', 'c': 'd', 'e': 'f'}
3 tol
>>> tol = (['a','b'],['c','d'],['e','f'])
>>> dict(tol)
{'a': 'b', 'c': 'd', 'e': 'f'}
4 tot
>>> tot = (('a','b'),('c','d'))
>>> dict(tot)
{'a': 'b', 'c': 'd'}
5 los
>>> los = ['ab','cd','ef']
>>> dict(los)
{'a': 'b', 'c': 'd', 'e': 'f'}
6 tos
>>> tos = ('ab','cd','ef')
>>> dict(tos)
{'a': 'b', 'c': 'd', 'e': 'f'}
为字典使用[key]添加或修改元素
向字典中添加元素非常简单,只需指定该元素的键并赋予相应的值即可。如果该元素的键已经存在于字典中,那么该键对应的旧值会被新值取代。如果该元素的键并未在字典中出现,则会被加入字典。
与列表不同,你不需要担心赋值过程中 Python会抛出越界异常。
添加
# 定义用户名密码字典
>>> user_pwd = {
... 'rison':123,
... 'tom':123,
... 'gogo':123
... }
增加用户 lili
>>> user_pwd['lili'] = 123
>>> user_pwd
{'rison': 123, 'tom': 123, 'gogo': 123, 'lili': 123}
修改
# 把lili的密码改为321
>>> user_pwd = {
... 'rison':123,
... 'tom':123,
... 'gogo':123,
... 'lili':123
... }
>>> user_pwd['lili'] = 321
>>> user_pwd
{'rison': 123, 'tom': 123, 'gogo': 123, 'lili': 321}
使用 update()合并字典
# 原有的字典
>>> user_pwd
{'rison': 123, 'tom': 123, 'gogo': 123, 'lili': 321}
# 另一个字典
>>> another_user_pwd = {'rison':321,'jimi':123}
>>> user_pwd.update(another_user_pwd) # 在原有基础上更新字典,没有的就添加,原有的就更新
>>> user_pwd
{'rison': 321, 'tom': 123, 'gogo': 123, 'lili': 321, 'jimi': 123} # rison密码变为321
使用del删除具有指定键的元素
#del dict[key]
>>> user_pwd
{'rison': 321, 'tom': 123, 'gogo': 123, 'lili': 321, 'jimi': 123}
>>> del user_pwd['gogo']
>>> user_pwd
{'rison': 321, 'tom': 123, 'lili': 321, 'jimi': 123}
使用clear()删除所有元素
# dict.clear() 相当于 dict = {} dict重新赋值为空字典
>>> user_pwd = {'rison': 321, 'tom': 123, 'lili': 321, 'jimi': 123}
>>> user_pwd.clear()
>>> user_pwd
{}
使用in判断key是否存在
>>> user_pwd = {'rison': 321, 'tom': 123, 'lili': 321, 'jimi': 123}
>>> 'lili' in user_pwd # 判断key是否in dict
True
>>> 'gogo' in user_pwd
False
>>> 123 in user_pwd # 123 不是作为key存在于dict
False
使用[key]获取元素
>>> user_pwd = {'rison': 321, 'tom': 123, 'lili': 321, 'jimi': 123}
# 两种方式
# 1 直接通过key取
>>> user_pwd['lili'] #存在则返回value
321
>>> user_pwd['gogo'] # 不存在则报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'gogo'
# 2 通过get()方法
>>> user_pwd.get('lili')
321
>>> user_pwd.get('gogo') # 不存在默认返回空 不报错
>>>
>>> user_pwd.get('gogo','not a user') # 可加逗号 指定返回值
'not a user'
使用keys()获取所有键
>>> user_pwd = {'rison': 321, 'tom': 123, 'lili': 321, 'jimi': 123}
>>> user_pwd.keys()
dict_keys(['rison', 'tom', 'lili', 'jimi']) # 返回的是迭代器
# 或者手动使其返回列表
>>> list(user_pwd.keys())
['rison', 'tom', 'lili', 'jimi']
使用 values()获取所有值
# 同上
>>> user_pwd.values()
dict_values([321, 123, 321, 123])
>>> list(user_pwd.values())
[321, 123, 321, 123]
使用 items()获取所有键值对
# 同上, 每一个键值对以元组形式返回
>>> user_pwd.items()
dict_items([('rison', 321), ('tom', 123), ('lili', 321), ('jimi', 123)])