python字典

旧时模样 提交于 2020-02-13 12:40:01

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}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!