python字典
dict
特点
- 符号{}
- 保存的元素是key:value对
- key在字典中是唯一的
定义空字典
dict1 = {}
dict2 = dict()
非空
dict3 = {'name1':'tom','name2':'jack'}
增加/更改
如果增加时,在字典中存在同名的key,则会覆盖原有的值
dict1 = {}
dict1['brand'] = 'huawei'
print(dict1)
dict1['brand'] = 'xiaomi'
print(dict1)
{'brand': 'huawei'}
{'brand': 'xiaomi'}
注册练习
print('-----欢迎来到注册界面-----')
# 模拟数据库
database = []
while True:
username = input('输入用户名: ')
password = input('输入密码: ')
repassword = input('输入确认密码: ')
email = input('输入邮箱: ')
phone = input('输入手机号: ')
# 定义一个字典
user = {}
# 将信息保存到字典中
user['username'] = username
if password == repassword:
user['password'] = password
else:
print('两次密码不一致! 重新输入')
continue
user['email'] = email
user['phone'] = phone
# 保存到数据库
database.append(user)
print('注册完成')
answer = input('是否继续注册?(y/n)')
if answer!='y':
break
print(database)
-----欢迎来到注册界面-----
输入用户名: admin
输入密码: 123456
输入确认密码: 123123
输入邮箱: 171
输入手机号: 150
两次密码不一致! 重新输入
输入用户名: admin
输入密码: 123456
输入确认密码: 123456
输入邮箱: 171
输入手机号: 150
注册完成
是否继续注册?(y/n)n
[{'username': 'admin', 'password': '123456', 'email': '171', 'phone': '150'}]
取值
通过key获取value值
dict1 = {'张三':100,'李四':85,'王五':92,'赵六':96}
print(dict1['张三'])
100
items()
将字典的键值对转成列表保存的形式
for i in dict1.items():
print(i)
('张三', 100)
('李四', 85)
('王五', 92)
('赵六', 96)
取出分数小于于90分的姓名
for key,value in dict1.items():
if value < 90:
print(key)
李四
values()
取出字典中所有值
result = dict1.values()
print(result)
dict_values([100, 85, 92, 96])
计算平均值
result = dict1.values()
totle = sum(result)
avg = totle/len(result)
print(avg)
93.25
keys()
取出字典中所有键
result = dict1.keys()
print(result)
dict_keys(['张三', '李四', '王五', '赵六'])
get()
当字典中没有我们要取的值时,会报错
print(dict1['赵飞'])
KeyError: '赵飞'
get取不到值,不会报错,返回None
print(dict1.get('赵飞'))
None
get如果取不到值,还可以设置默认值
print(dict1.get('赵飞',99))
99
删除
del
dict1 = {'张三':100,'李四':85,'王五':92,'赵六':96}
del dict1['张三']
print(dict1)
{'李四': 85, '王五': 92, '赵六': 96}
当删除一个不存在key时,会报错
pop()
根据key删除字典中的key-value对
返回值时删除成功的key-value中的value
dict1 = {'张三':100,'李四':85,'王五':92,'赵六':96}
result = dict1.pop('李四')
print(result)
print(dict1)
85
{'张三': 100, '王五': 92, '赵六': 96}
当删除一个可能不存在的键值时,可以使用默认值
当不存在时,不会报错,返回值即为默认值
result = dict1.pop('hh','该字典中没有此键')
print(result)
print(dict1)
该字典中没有此键
{'张三': 100, '王五': 92, '赵六': 96}
popitem()
随机删除字典中键值对(一般是从末尾删除元素)
dict1 = {'张三':100,'李四':85,'王五':92,'赵六':96}
result = dict1.popitem()
print(result)
print(dict1)
result = dict1.popitem()
print(result)
print(dict1)
('赵六', 96)
{'张三': 100, '李四': 85, '王五': 92}
('王五', 92)
{'张三': 100, '李四': 85}
clear()
清空字典
dict1 = {'张三':100,'李四':85,'王五':92,'赵六':96}
dict1.clear()
print(dict1)
{}
字典合并
字典不支持+符号
update()
dict1 = {'张三':100,'李四':85,'王五':92,}
dict2 = {'张三':60,'阿飞':76}
dict1.update(dict2)
print(dict1)
print(dict2)
{'张三': 60, '李四': 85, '王五': 92, '阿飞': 76}
{'张三': 60, '阿飞': 76}
没有返回值
fromkeys()
转换为字典的形式
如果没有指定默认值则用None
list1 = ['aa','cc','dd']
new_dict = dict.fromkeys(list1,10)
print(new_dict)
{'aa': 10, 'cc': 10, 'dd': 10}