字典:
字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:"键对象"和“值对象”。可以通过"键对象“实现快速获取、删除、更新对应的“值对象”。
列表中我们通过“下标数字”找到对应的对象,字典中通过“键对象”找到对应的“值对象”。“键”是任意的不可变数据,比如整数、浮点数、字符串、元组。但是:列表、字典、集合、这些可变对象,不能作为“键”,并且“键”不可重复。
“值”可以任意数据,并且可重复
字典的定义方式:
a={'name':'xxx','age':18}
字典的创建:
#1.可以通过{},dict()来创建字典对象
a={'name':'xx','age':18}
b=dict(name='xx',age=18)
c=dict([('name','xx'),('age',18)])
print(a)
>>>{'name': 'xx', 'age': 18}
print(b)
>>>{'name': 'xx', 'age': 18}
print(c)
>>>{'name': 'xx', 'age': 18}
d={} #空的字典对象
e=dict() #空的字典对象
#2.通过zip()创建字典,谁在前,谁为键
k=['name','age']
v=['xxx',18]
d=dict(zip(k,v))
print(d)
>>>{'name': 'xxx', 'age': 18}
#3.通过fromkeys创建值为空的字典
a=dict.fromkeys(['name','age'])
print(a)
>>>{'name': None, 'age': None}
字典元素的访问(6种方法):
#先设定一个字典对象:
a={'name':'xxa','age':18}
#**1.**通过【键】获取“值”,若键不在,则抛出异常
print(a['name'])
>>>xxa
print(a['sex'])
>>>Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 'sex'
#**2.**通过get()方法获取“值”,推荐使用。优点是:指点键不存在,返回None,也可以设定指定键不存在时mo默认返回对象,推荐使用get()获取“键值对”
print(a.get('name'))
>>>xxa
print(a.get('sex','一个女人'))
>>>一个女人
#**3.**列出所有键值对
print(a.items())
>>>dict_items([('name', 'xxa'), ('age', 18)])
#**4.**列出所有的键,列出所有的值
print(a.keys())
>>>dict_keys(['name', 'age'])
print(a.values())
>>>dict_values(['xxa', 18])
#**5.**len()键值对的个数
print(len(a))
>>>2
#**6.**检测一个“键”,是否存在字典中
if "name" in a:
print(True)
>>> True
添加:
给字典新增“键值对”。如果存在,则覆盖旧的键值对,如果“键”不存在,则新增“键值对”
>>>a={"name":"天天向上","age":18}
>>>a['address']='同在地球村'
>>>a
{'name': '天天向上', 'age': 18, 'address': '同在地球村'}
修改:
使用update()将字典中所有键值对全部添加到旧字典对象上。如果“键”有重复,则直接覆盖
>>>a={"name":"天天向上","age":18}
>>>b={'name':'hello',"sex":"男",}
>>>a.update(b)
>>>a
{'name': 'hello', 'gae': 18, 'address': '同在地球村', 'sex': '男'}
删除:
字典中元素的删除,可以使用del()方法,或者clear()删除所有键值对,pop()删除指定键值对,并返回对应的“值对象“
>>>a={"name":"天天向上","age":18, 'address': '同在地球村'}
>>>del(a['name'])
>>>a
{'age': 18, 'address': '同在地球村'}
>>>b=a.pop('age')
>>>b
18
随机删除:
popitem(),随机删除和返回该键值对,字典是“无序可变序列”,因此没有第一个元素、最后一个元素的概念,popitem弹出随机的项,因为字典并没有“最后的元素”或者其他有关顺序的概念,若想一个接一个地移除并处理项,这个方法就非常有效(因为不用获取键的列表)
>>>a={"age":18, 'address': '同在地球村'}
>>>a.popitem()
('address', '同在地球村')
>>>a.popitem()
('age', 18)