字典

字典

字典( 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)])

 

posted @ 2020-08-15 17:40  阿伟啊啊啊啊  阅读(189)  评论(0编辑  收藏  举报