Python 编程 | 连载 10 - 字典及操作
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
一、字典 Dict 操作
字典键值对的添加和修改数据
字典可以通过 dict[key]=new_value 来修改字典中可以key对应的value,不想字符串列表和元组,字典是没有索引的,如果key存在则dict[key]=new_value是修改value,如果key不存在,则会往字典中添加新的键值对
user = {
'name': 'stark',
'age': 40
}
print('初始user的id的地址为:', id(user))
# 更新
user['name'] = 'Tony Stark'
print(user)
print('更新后的user的id地址为:', id(user))
# 添加
user['nickname'] = 'IronMan'
print(user)
print('添加键值对后的user的id为:', id(user))
字典是可变数据类型,修改和添加都是在原字典基础上的更改
使用 update 函数可以一次性修改所有key对应的value,update函数既添加新的字典,如新字典中的key有和原字典中的key重复,则该key的value会被新字典的value 覆盖
update 无返回返回值,并且是在原字典上进行这些操作
setdefualt 函数可以获取指定 key 对应的 value,如果 key 不存在字典中,将会添加 key 并将value设置为默认值
user = {'username': 'stark', 'address': 'NY'}
user['username'] = 'Tony Stark'
print(user)
user['nickname'] = 'IRONMAN'
print(user)
new_user = {'username': 'peter', 'address': 'Queens', 'age': 18}
user.update(new_user)
print(user)
user.setdefault('nickname', 'Spider Man')
print(user['nickname'])
user.setdefault('name', 'stank')
print(user['name'])
字典的 keys 函数
keys 函数可以获取当前字典中的所有的键,keys函数无须传递参数,并且返回一个key集合的伪列表,这个伪列表不具备列表的所有功能
project = {
'id': 1,
'name': 'youtest',
'purpose': 'autotest'
}
keys = project.keys()
print(keys)
print(type(keys))
keys_list = list(keys)
print(type(keys_list))
print(keys_list)
字典的 values 函数
values 函数用来返回字典中所有的value的集合,该函数无须传递参数,返回的是一个不具备所有列表功能的伪列表
project = {
'id': 1,
'name': 'youtest',
'purpose': 'autotest'
}
values = project.values()
print(values)
print(type(values))
values_list = list(values)
print(type(values_list))
print(values_list)
字典中 key 的获取
字典中除了通过[]来获取指定key的value还可以通过get函数来获取指定 key 的 value
dict.get(key, default=None)
- key:需要获取value的key
- default:key不存在时返回此默认值,默认为None,也可以自定义
[] 与 get 的区别:
- [] 如果获取的key不存在,则直接报错
- get如果获取的key不存在,则直接返回默认值
- 实际开发中优先使用get获取指定key的value
user_info = {
'id': 1,
'username': 'liilth',
'password': 'pc12138'
}
values = []
values.append(user_info['id'])
values.append(user_info['username'])
values.append(user_info['password'])
print(values)
values.append(user_info['create_time'])
# 代码与上面的一致
print(values)
values.append(user_info.get('create_time'))
print(values)
使用get函数获取key对应的value,key不存在则获取默认值None
设置默认值
# 代码与上面一致
values.append(user_info.get('update_time', '03-31'))
print(values)
key存在则不会使用get设置的默认值
# 代码与上面一致
values.append(user_info.get('username', 'tony stark'))
print(values)
字典中key的值为None时,使用get函数设置默认值,取得是None;无论字典中存的值是什么类型的,只要可以被存入字典中,就可以成功获取
字典的删除操作
有三个函数可以对字典进行删除操作:
- clear:清空当前字典中的所有数据,不会删除字典,无参数、无返回值
- pop:删除字典中指定的Key,入参为指定的Key,返回字典中Key对应的Value,Key不存在会报错
- del:可以删除字典中的键值对,也可以删除整个字典既删除字典所在变量
- popitem:删除当前字典末尾的一对键值,并返回一个元组类型的数据(删除的键值对),无须传递参数;如果字典为空则会报错
user_info = {
'id': 1,
'username': 'liilth',
'password': 'pc12138'
}
print('执行clear函数前字典的内容为:{}'.format(user_info))
user_info.clear()
print('执行clear函数后字典的内容为:{}'.format(user_info))
user_info = {
'id': 1,
'username': 'liilth',
'password': 'pc12138'
}
print('执行pop函数前字典的内容为:{}'.format(user_info))
id_val = user_info.pop('id')
print('执行pop函数的返回值为删除的Key对应的Value:{}'.format(id_val))
print('执行pop函数后字典的内容为:{}'.format(user_info))
print('再次执行删除id的操作')
id_val_01 = user_info.pop('id')
字典中的每个Key只能执行一次pop操作,key不存在时会报错
user_info = {
'id': 1,
'username': 'liilth',
'password': 'pc12138'
}
print('执行del操作前字典的内容为:{}'.format(user_info))
del user_info['username']
print('字典执行del操作删除指定的Key后:{}'.format(user_info))
print('del删除不存在的key')
del user_info['username']
del函数删除的方式与pop函数稍有不同,相同的是如果Key不存在,del执行删除Key的操作也会报错
del user_info
print(user_info)
user_info = {
'username': 'liilth',
}
removed_key_value = user_info.popitem()
print(removed_key_value)
print(type(removed_key_value))
user_info.popitem()
返回元组是为了防止修改
字典 copy
copy函数可以将当前的字典复制出一个新的字典,copy函数无入参,返回一个新的字典,新字典与原字典内容相同,但是内存地址不同
fruits = {
'apple': 30,
'banana': 20,
'pear': 100
}
copy_fruits = fruits.copy()
print('字典fruits的内存地址为:{}'.format(id(fruits)))
print('新字典copy_fruits的内存地址为:{}'.format(id(copy_fruits)))
fruits.pop('pear')
print('fruits执行删除Key的操作后:{}'.format(fruits))
print(copy_fruits)
执行copy操作后,两个字典是完全不同的,一个字典的操作不会对另一个有影响
字典成员操作
判断字典成员的方式有两种:
- in 和 not in 成员操作符可以判断Key是否存在与字典中
- 字典的内置函数 get 可以获取指定Key的值,如果Key不存在时返回None,也可以
in 与 not in 成员操作符只能判断key是否存在,不会对Value是否存在进行判断
fruits = {
'apple': 30,
'banana': 20,
'pear': 100,
'organge': None
}
apple_is_exist = 'apple' in fruits
print(apple_is_exist)
value_is_exist = 30 in fruits
print(value_is_exist)
pear_value_is_exist = 100 in fruits
print(pear_value_is_exist)
none_is_exist = None in fruits
print(none_is_exist)
内置函数 get 可以获取指定Key的Value,如果Key不存在则获取到的Value为空,也可以指定默认值
user_info = {
'id': 1,
'username': 'liilth',
'password': 'pc12138'
}
print('Key存在时获取的Value:', user_info.get('username'))
print("设置不存在的Key的默认值", user_info.get('create_time', 16578924543))
print("Key不存在时返回:", user_info.get('update_time'))
相关文章
- Python 编程 | 连载 11 - Python 集合
- Python 编程骚操作连载(一)- 字符串、列表、字典和集合的处理(Part A)
- Python基础22-并发编程
- Python 编程 | 连载 02 - 数字与字符串
- Python 编程 | 连载 25 - Python 多进程
- Python 编程 | 连载 12 - Python 数据类型转换
- Python 编程 | 连载 03 - 布尔、列表和元组类型
- Python 编程 | 连载 14 - Python 的函数
- Python 编程 | 连载 01 - Python 的标识符
- 常用Python库_编程代码大全
- Python 编程 | 连载 16 - 类的特性
- Python Flask 编程 | 连载 02 - Flask 路由
- Python 编程 | 连载 23 - 常用函数与高阶函数
- Python 编程 | 连载 21 -序列化与加密模块
- Python 编程 | 连载 04 - 字典与运算符
- Python Flask 编程 | 连载 06 - Jinja2 语法
- Python Flask 编程 | 连载 03 - Flask 请求
- Python 编程 | 连载 10 - 字典及操作
- Python升级之路( Lv14 ) 并发编程初识
- Python 编程骚操作连载(一)- 字符串、列表、字典和集合的处理(Part C)