目录
字典属于可变序列,使用‘ 键:值 ’(key - value)的方式配对存储数据。Python的字典由”键”和“值“构成,其中”键“表示查找的数据,”值“表示查找的结构,类似于新华字典的“ 拼音 - 汉字”
dictname = { ' key1 ' : ' value1 ',' key2 ' : ' value2 ', ... , ' key n ' : ' value n ', }
dictname --- 字典名
key --- 元素的键
value --- 元素的值,可为任意数据,不需要唯一
- dict1 = {'andy': 1001, 'fox': 1002, 'alice': 1003}
- dict2 = {} # 空字典
- dict3 = dict() # 使用dict()方法,强制转换 创建空字典
-
- name = ['lose', '凝光', '风霜', '学业']
- sign = ['001', '002', '110', '561']
- # 使用zip()函数 将列表或元组对应的元素组合成字典
- dict4 = dict(zip(name, sign))
-
- dict5 = dict(a=92.5, b=77.4, c=64.9) # 键 = 值的方式创建
- print(dict1, '\n', dict2, '\n', dict3, '\n', dict4, '\n', dict5)
-
- 结果:
- {'andy': 1001, 'fox': 1002, 'alice': 1003}
- {}
- {}
- {'lose': '001', '凝光': '002', '风霜': '110', '学业': '561'}
- {'a': 92.5, 'b': 77.4, 'c': 64.9}
-
- Process finished with exit code 0
格式 --- dictname[键] = 值
例
- dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
- print(dict1)
- dict1['橘子'] = 6
- print(dict1)
- dict1["苹果"] = 12
- print(dict1)
-
- 结果:
- {'西瓜': 1, '香蕉': 8, '苹果': 10}
- {'西瓜': 1, '香蕉': 8, '苹果': 10, '橘子': 6}
- {'西瓜': 1, '香蕉': 8, '苹果': 12, '橘子': 6}
-
- Process finished with exit code 0
del 字典名[键] --- 删除字典中特定元素
dictname.clear( ) --- 清空字典全部元素
del 字典名 --- 删除字典整体
例
- dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
- del dict1['西瓜']
- print(dict1)
- dict1.clear()
- print(dict1)
- del dict1
- print(dict1)
-
- 结果:
- {'香蕉': 8, '苹果': 10}
- {}
- Traceback (most recent call last):
- File "E:\pythontext\test3.py", line 1886, in
- print(dict1)
- NameError: name 'dict1' is not defined
-
- Process finished with exit code 1
-
dictname [ ]
例
- dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
- print(dict1['香蕉'], dict1['苹果'])
-
- 结果:
- 8 10
-
作用 --- 保护原字典内容
格式 --- new_dictname = dictname.copy( )
例
- dict1 = {'西瓜': 1, '香蕉': 8, "苹果": 10}
- dict2 = dict1.copy()
- print(dict1, '\n', dict2)
- print(id(dict1), id(dict2)) # 字典拷贝 默认使用深拷贝
-
- 结果:
- {'西瓜': 1, '香蕉': 8, '苹果': 10}
- {'西瓜': 1, '香蕉': 8, '苹果': 10}
- 1597252597504 1597252597696
-
- Process finished with exit code 0
-
注意:
默认为深拷贝,新字典地址独立
格式 --- dictname.get( key, default )
key --- 指定的键
defaul --- 可省略,用于指定键不存在时,返回默认值,若省略则返回None
- dict1 = {'Name': 'andy', 'Age': 17, 'Class': 19}
- print(dict1.get('Age'))
- print(dict1.get("Score"))
- print(dict1.get('Score', '无此选项'))
- # 若访问的键不存在则执行default
-
- 结果:
- 17
- None
- 无此选项
格式1 --- 遍历值,items()方法
for i in dictname.items():
处理 i
格式2 --- 键:值遍历
for key,value indictname.items():
处理 key 和 value
- name = ['lose', '凝光', '风霜', '学业']
- sign = ['001', '002', '110', '561']
- dict1 = dict(zip(name, sign))
-
- for i in dict1.items():
- print(i)
-
- for j, k in dict1.items():
- print(j, "的编号为:", k)
-
- 结果:
- ('lose', '001')
- ('凝光', '002')
- ('风霜', '110')
- ('学业', '561')
- lose 的编号为: 001
- 凝光 的编号为: 002
- 风霜 的编号为: 110
- 学业 的编号为: 561
-
- Process finished with exit code 0
格式3 --- 遍历字典的键,keys()
for key dictname.keys():
处理
- players = {'张三':77.5,'李四':55.9,"王五":87.6}
- for name in players.keys():
- print("姓名:",name)
-
- 结果:
- 姓名: 张三
- 姓名: 李四
- 姓名: 王五
-
- Process finished with exit code 0
注意:
1. 不允许同一个键出现2次,创建时如果同一个键被赋值2次,后一个会被记住
dict1 = {'andy': 1001, "score": 92, 'andy': 1002} print(dict1) 结果: {'andy': 1002, 'score': 92}2. 键必须不可变,所以使用数字、字符串、元组来充当,列表不行
dict1 = {['andy']: 1001, "score": 92} print(dict1) 结果: Traceback (most recent call last): File "E:\pythontext\test3.py", line 1916, in dict1 = {['andy']: 1001, "score": 92} TypeError: unhashable type: 'list' Process finished with exit code 1
列表存储在字典中时,一般作为字典的某个键的值出现,需要使用嵌套循环完成处理,外层循环用来取得字典的键,内存循环用于取得值或将列表拆解
例
- sports = {'andy': ['篮球', '足球', '橄榄球'],
- 'jenny': ['体操', '游泳'],
- 'joker': ['羽毛球', '轮滑鞋', '骑车']}
- for name,na_sport in sports.items():
- print('%s喜欢的运动是:'%name,end=' ')
- for sp in na_sport:
- print(' ',sp,end=' ')
- print()
-
- 结果:
- andy喜欢的运动是: 篮球 足球 橄榄球
- jenny喜欢的运动是: 体操 游泳
- joker喜欢的运动是: 羽毛球 轮滑鞋 骑车
-
- Process finished with exit code 0
字典存储在字典中一般用于表示字典中键的值
- wechat = {'001': {'last_name': '张三', 'first_name': '李四', 'city': '西安'},
- '002': {'last_name': '王五', 'first_name': '刘柳', 'city': '咸阳'}}
- for num, name in wechat.items():
- print("账号:", num, end=' ')
- print('姓名:', name['first_name'], end=' ')
- print('住址:', name['city'])
-
- 结果:
- 账号: 001 姓名: 李四 住址: 西安
- 账号: 002 姓名: 刘柳 住址: 咸阳
-
- Process finished with exit code 0