前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 编程 | 连载 10 - 字典及操作

Python 编程 | 连载 10 - 字典及操作

作者头像
RiemannHypothesis
发布2022-09-26 14:20:12
2840
发布2022-09-26 14:20:12
举报
文章被收录于专栏:Elixir

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

一、字典 Dict 操作

字典键值对的添加和修改数据

字典可以通过 dict[key]=new_value 来修改字典中可以key对应的value,不想字符串列表和元组,字典是没有索引的,如果key存在则dict[key]=new_value是修改value,如果key不存在,则会往字典中添加新的键值对

代码语言:javascript
复制
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))
image.png
image.png

字典是可变数据类型,修改和添加都是在原字典基础上的更改

使用 update 函数可以一次性修改所有key对应的value,update函数既添加新的字典,如新字典中的key有和原字典中的key重复,则该key的value会被新字典的value 覆盖

update 无返回返回值,并且是在原字典上进行这些操作

setdefualt 函数可以获取指定 key 对应的 value,如果 key 不存在字典中,将会添加 key 并将value设置为默认值

代码语言:javascript
复制
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'])
image.png
image.png

字典的 keys 函数

keys 函数可以获取当前字典中的所有的键,keys函数无须传递参数,并且返回一个key集合的伪列表,这个伪列表不具备列表的所有功能

代码语言:javascript
复制
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)
image.png
image.png

字典的 values 函数

values 函数用来返回字典中所有的value的集合,该函数无须传递参数,返回的是一个不具备所有列表功能的伪列表

代码语言:javascript
复制
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)
image.png
image.png

字典中 key 的获取

字典中除了通过[]来获取指定key的value还可以通过get函数来获取指定 key 的 value

代码语言:javascript
复制
dict.get(key, default=None)
  • key:需要获取value的key
  • default:key不存在时返回此默认值,默认为None,也可以自定义

[] 与 get 的区别:

  • [] 如果获取的key不存在,则直接报错
  • get如果获取的key不存在,则直接返回默认值
  • 实际开发中优先使用get获取指定key的value
代码语言:javascript
复制
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'])
image.png
image.png
代码语言:javascript
复制
# 代码与上面的一致
print(values)
values.append(user_info.get('create_time'))
print(values)
image.png
image.png

使用get函数获取key对应的value,key不存在则获取默认值None

设置默认值

代码语言:javascript
复制
# 代码与上面一致
values.append(user_info.get('update_time', '03-31'))
print(values)
image.png
image.png

key存在则不会使用get设置的默认值

代码语言:javascript
复制
# 代码与上面一致
values.append(user_info.get('username', 'tony stark'))
print(values)
image.png
image.png

字典中key的值为None时,使用get函数设置默认值,取得是None;无论字典中存的值是什么类型的,只要可以被存入字典中,就可以成功获取

字典的删除操作

有三个函数可以对字典进行删除操作:

  • clear:清空当前字典中的所有数据,不会删除字典,无参数、无返回值
  • pop:删除字典中指定的Key,入参为指定的Key,返回字典中Key对应的Value,Key不存在会报错
  • del:可以删除字典中的键值对,也可以删除整个字典既删除字典所在变量
  • popitem:删除当前字典末尾的一对键值,并返回一个元组类型的数据(删除的键值对),无须传递参数;如果字典为空则会报错
代码语言:javascript
复制
user_info = {
    'id': 1,
    'username': 'liilth',
    'password': 'pc12138'
}

print('执行clear函数前字典的内容为:{}'.format(user_info))
user_info.clear()
print('执行clear函数后字典的内容为:{}'.format(user_info))
image.png
image.png
代码语言:javascript
复制
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')
image.png
image.png

字典中的每个Key只能执行一次pop操作,key不存在时会报错

代码语言:javascript
复制
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的操作也会报错

代码语言:javascript
复制
del user_info
print(user_info)
image.png
image.png
代码语言:javascript
复制
user_info = {
    'username': 'liilth',
}

removed_key_value = user_info.popitem()
print(removed_key_value)
print(type(removed_key_value))
user_info.popitem()
image.png
image.png

返回元组是为了防止修改

字典 copy

copy函数可以将当前的字典复制出一个新的字典,copy函数无入参,返回一个新的字典,新字典与原字典内容相同,但是内存地址不同

代码语言:javascript
复制
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)
image.png
image.png

执行copy操作后,两个字典是完全不同的,一个字典的操作不会对另一个有影响

字典成员操作

判断字典成员的方式有两种:

  • in 和 not in 成员操作符可以判断Key是否存在与字典中
  • 字典的内置函数 get 可以获取指定Key的值,如果Key不存在时返回None,也可以

in 与 not in 成员操作符只能判断key是否存在,不会对Value是否存在进行判断

代码语言:javascript
复制
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)
image.png
image.png

内置函数 get 可以获取指定Key的Value,如果Key不存在则获取到的Value为空,也可以指定默认值

代码语言:javascript
复制
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'))
image.png
image.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、字典 Dict 操作
    • 字典键值对的添加和修改数据
      • 字典的 keys 函数
        • 字典的 values 函数
          • 字典中 key 的获取
            • 字典的删除操作
              • 字典 copy
                • 字典成员操作
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档