企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[toc] ## 字典的定义与特性 字典是Python语言中唯一的映射类型。 ### 定义: `{key1:value1,key2:value2}` 1. 键与值用冒号“:”分开; 2. 项与项用逗号“,”分开; ### 特性: 1. key-value结构 2. key必须可hash、且必须为不可变数据类型、必须唯一 3. value可存放任意多个值、可修改、可以不唯一 4. 无序 ## 字典的创建与常见操作 ### 字典的创建 ```python person = {"name": "alex", 'age': 20} #或 person = dict(name='seven', age=20) #或 person = dict({"name": "egon", 'age': 20}) #或 ``` ### 键、值、键值对 1. dic.keys() 返回一个包含字典所有KEY的列表; ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> mydic.keys() dict_keys(['name', 'age', 'sex']) ``` 2. dic.values() 返回一个包含字典所有value的列表; ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> mydic.values() dict_values(['luo', '22', 'man']) ``` 3. dic.items() 返回一个包含所有(键,值)元祖的列表; ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> mydic.items() dict_items([('name', 'luo'), ('age', '22'), ('sex', 'man')]) ``` ### 新增修改 1. dic['new_key'] = 'new_value'; 如果key不存在则增加,如果存在则修改源key的vaule ```python >>> mydic={'name': 'luo', 'sex':'man'} >>> mydic['age']=22 >>> mydic['name']='gang' >>> mydic {'name': 'gang', 'sex': 'man', 'age': 22} ``` 2. dic.setdefault(key, None) 如果字典中存在key则获取,不存在Key为它赋值; ```python >>> mydic={'name':'luo'} >>> mydic.setdefault('name','gang') 'luo' >>> mydic.setdefault('age','22') '22' >>> mydic {'name': 'luo', 'age': '22'} ``` ### 查看 1. dic['key'] 返回字典中key对应的值,若key不存在字典中,则报错; ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> mydic['age'] '22' >>> mydic['ages'] Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: 'ages' ``` 2. dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None) ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> mydic.get('age') '22' >>> mydic.get('ages') >>> mydic.get('ages',50) 50 ``` ### 删除 1. dic.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常; ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> mydic.pop('age') '22' >>> mydic.pop('age') Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: 'age' >>> mydic {'name': 'luo', 'sex': 'man'} ``` 2. dic.clear() 删除字典中的所有项或元素; ```python >>> mydic.clear() >>> mydic {} ``` 3. del通用删除 ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> del mydic['name'] >>> mydic {'age': '22', 'sex': 'man'} ``` ### 长度和合并 1. len(dic) 获取字典长度 ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> len(mydic) 3 ``` 2. dic.update(dic2) 将字典dic2的键值对添加到字典dic中 ```python >>> mydic1={'name': 'luo'} >>> mydic2={'sex': 'man'} >>> mydic1.update(mydic2) >>> mydic1 {'name': 'luo', 'sex': 'man'} ``` ### 是否存在 ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} >>> 'name' in mydic True >>> 'names' in mydic False ``` ### 循环方式 1. for k in dic等于for k in dic.keys() 推荐 ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} ... for k in mydic: ... print(k,mydic[k]) name luo age 22 sex man ``` 2. for k,v in dic.items() 不推荐 之所以这种方法不推荐,是因为这种方法是把字典转换为了元组进行循环,而字典事通过hash的方式获取键值,效率很高,转换为元组反而浪费资源了效率. ```python >>> mydic={'name': 'luo', 'age': '22','sex':'man'} ... for k,v in mydic.items(): ... print(k,v) name luo age 22 sex man ``` ### 多级嵌套列表 ```python >>> info={ ... 'stu01':{'name':'luo','age':22}, ... 'stu02':{'name':'gang','age':32} ... } >>> info {'stu01': {'name': 'luo', 'age': 22}, 'stu02': {'name': 'gang', 'age': 32}} ```