写点什么

软件测试 / 测试开发丨 Python 常用数据结构 - 字典

作者:测试人
  • 2023-05-22
    北京
  • 本文字数:2229 字

    阅读完需:约 7 分钟

本文为霍格沃兹测试开发学社学员笔记分享

原文链接:https://ceshiren.com/t/topic/24520

字典

1、 字典使用:创建

"""字典使用:创建"""# 1、使用大括号填充键值对dc = {'name': 'Harry Potter', 'age': 18}print(type(dc), dc) #<class 'dict'> {'name': 'Harry Potter', 'age': 18}
# 2、使用字典构造方法dc1 = dict() # 空字典dc2 = dict(name="Harry Potter", age=18) # 关键字参数赋值print(type(dc2), dc2)dc3 = dict([("name", "Harry Potter"), ("age", 18)])print(type(dc3), dc3) #<class 'dict'> {'name': 'Harry Potter', 'age': 18}
# 3、使用字典推导式dc4 = {k: v for k, v in [("name", "Harry Potter"), ("age", 18)]}print(type(dc4), dc4) #<class 'dict'> {'name': 'Harry Potter', 'age': 18}
复制代码

2、 字典使用:访问元素

"""字典使用:访问元素"""dc = {"name": "Harry Potter", "age": 18}# 1、访问存在的keyprint(dc["name"]) #Harry Potterprint(dc["age"]) #18
# 2、访问不存在的key,会报KeyError错误print(dc['hobby'])
复制代码

3、 字典使用:操作元素

  • 语法:dict[key] = value

  • 添加元素 键不存在

  • 修改元素 键已经存在

"""字典使用:操作元素"""dc = {"name": "Harry Potter", "age": 18}# 1、修改年龄,改为20dc['age'] = 20print(dc) #{'name': 'Harry Potter', 'age': 20}
# 2、新增hobby字段dc['hobby'] = 'Magic'print(dc) #{'name': 'Harry Potter', 'age': 20, 'hobby': 'Magic'}
复制代码

4、 字典使用:嵌套字典

  • 嵌套字典

  • 字典的值可以是字典对象

"""字典使用:嵌套字典"""dc = {"name": "Harry Potter", "age": 18, "course": {"magic": 90, "python": 80}}# 1、获取课程Magic的值print(dc['course']['magic']) #90
# 2、把python分数改成100分dc['course']['python'] = 100print(dc) #{'name': 'Harry Potter', 'age': 18, 'course': {'magic': 90, 'python': 100}}
复制代码

5、 字典方法 keys()

"""字典方法 keys()"""dc = {"name": "Harry Potter", "age": 18}keys = dc.keys()print(type(keys), keys) #<class 'dict_keys'> dict_keys(['name', 'age'])
# 1、遍历查看所有的键for key in keys: print(key)#name#age
# 2、将视图对象转成列表print(list(keys)) #['name', 'age']
复制代码

6、 字典方法 values()

"""字典方法 values()"""dc = {"name": "Harry Potter", "age": 18}values = dc.values()print(type(values), values) #<class 'dict_values'> dict_values(['Harry Potter', 18])
# 1、遍历查看所有的值for value in values: print(value)
# 2、将视图对象转成列表print(list(values)) #['Harry Potter', 18]
复制代码

7、 字典方法 items()

"""字典方法 items()"""dc = {"name": "Harry Potter", "age": 18}items = dc.items()print(type(items), items) #<class 'dict_items'> dict_items([('name', 'Harry Potter'), ('age', 18)])
# 1、遍历查看所有的项for item in items: print(item)#('name', 'Harry Potter')#('age', 18)
# 2、将视图对象转成列表print(list(items))#[('name', 'Harry Potter'), ('age', 18)]
复制代码

8、 字典方法 get()

  • get(key)

  • 获取指定 key 关联的 value 值。

  • 入参: key:字典的键,必传。

  • 返回: 如果 key 存在于字典中,返回 key 关联的 value 值。 如果 key 不存在,则返回 None。

  • 此方法的好处是无需担心 key 是否存在,永远都不会引发 KeyError 错误

"""字典方法 get()"""dc = {"name": "Harry Potter", "age": 18}
# 1、访问存在的key
name = dc['name']print(name)#Harry Potter
# 2、访问不存在的keyhobby = dc.get('hobby')print(hobby) #None
复制代码

9、 字典方法 update()

  • update(dict)

  • 使用来自 dict 的键/值对更新字典,覆盖原有的键和值。

  • 入参: dc:字典对象,必传

  • 返回:None

dc = {"name": "Harry Potter", "age": 18}dc.update({"age": 20, "hobby": "magic"})print(dc) #{'name': 'Harry Potter', 'age': 20, 'hobby': 'magic'}
复制代码

10、 字典方法 pop()

  • pop(key)

  • 删除指定 key 的键值对,并返回对应 value 值。

  • 入参: key:必传

  • 返回: 如果 key 存在于字典中,则将其移除并返回 value 值 如果 key 不存在于字典中,则会引发 KeyError。

字典方法 pop()dc = {"name": "Harry Potter", "age": 18}
# 1、弹出item = dc.pop("age")print(dc, item) #{'name': 'Harry Potter'} 18
# 2、删除不存在的keydc.pop("hobby") # 报错keyError
复制代码

11、 字典推导式

# 未使用字典推导式的写法dc = {'a': 1, 'b': 2, 'c': 3}d_old = dict()for k, v in dc.items():    if v > 1:        d_old[k] = v ** 2        print(d_old)
# 使用字典推导式d_new = {k : v ** 2 for k,v in dc.items() if v > 1 }print(d_new)
复制代码

12、 实例

给定一个字典对象,请使用字典推导式,将它的 key 和 value 分别进行交换。也就是 key 变成值,值变成 key。

输入: {'a': 1, 'b': 2, 'c': 3}

输出: {1: 'a', 2: 'b', 3: 'c'}

dc = {'a': 1, 'b': 2, 'c': 3}d_old = dict()for k, v in dc.items():    d_old[v] = kprint(d_old)#{1: 'a', 2: 'b', 3: 'c'}
# # 使用字典推导式d_new = {v : k for k,v in dc.items() }print(d_new)#{1: 'a', 2: 'b', 3: 'c'}
复制代码

13、字典的总结

字典的创建:使用大括号{}、 dict()、字典推导式 访问元素:[key] 操作元素:dict[key] = value 字典可以嵌套字典 字典的方法:

  • keys()

  • values()

  • items()

  • get()

  • update()

  • pop()

发布于: 1 小时前阅读数: 5
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 常用数据结构-字典_Python_测试人_InfoQ写作社区