当前位置:   article > 正文

Python 字典(Dict)详解与实战应用

python 字典

目录

前言

一、字典的定义和创建

1.使用花括号定义

2.使用dict()函数创建

二、字典的三种遍历方式

方式1:遍历字典的键,通过键获取值  dict.keys()

方式2:遍历字典的值,但不能通过值获取键 dict.values()

方式3:最常用的方法:直接获取键值对  dict.items()

三、字典的常见操作

1.添加

2.删除

pop()根据键删除键值对,并返回值

popitem()默认删除最后一个键值对,并以元组的方式返回这个键值对

clear()清空字典

3.修改

4.查找

5.copy拷贝

1.浅拷贝

2.深拷贝

总结



前言

字典(Dict)是一种非常强大且常用的数据结构,它通过键值对(key-value pairs)的形式存储数据。字典的键(key)必须是唯一的且不可变(如字符串、数字或元组),而值(value)则可以是任意数据类型。


一、字典的定义和创建

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.使用花括号定义

Python中,字典可以通过花括号{}直接定义,键和值之间用冒号:分隔,键值对之间用逗号,分隔。

  1. # 使用花括号定义字典
  2. d1 = {
  3. "name": "马云",
  4. "age": 18
  5. }
  6. print(d1, type(d1)) # 输出: {'name': '马云', 'age': 18} <class 'dict'>

2.使用dict()函数创建

除了直接使用花括号,还可以使用dict()函数来创建字典。该函数可以接受多种形式的参数

  1. # 使用dict()函数创建空字典
  2. d2 = dict()
  3. print(d2, type(d2)) # 输出: {} <class 'dict'>
  4. # 使用关键字参数创建字典
  5. d3 = dict(a=10, b=20, c=30)
  6. print(d3, type(d3)) # 输出: {'a': 10, 'b': 20, 'c': 30} <class 'dict'>
  7. # 使用包含键值对的列表(每个元素为元组)创建字典
  8. d4 = dict([("string1", "123"), ("string2", 456), ("a", 30), ("name", "malei")])
  9. print(d4, type(d4)) # 输出: {'string1': '123', 'string2': 456, 'a': 30, 'name': 'malei'} <class 'dict'>
  10. # 或者使用关键字参数形式,与直接赋值类似
  11. d4 = dict(string1="123", string2=456, a=30, name="malei")
  12. print(d4, type(d4)) # 输出同上

二、字典的三种遍历方式

方式1:遍历字典的键,通过键获取值  dict.keys()

  1. # 方式1:遍历字典的键,通过键获取值 dict.keys()
  2. d5 = {
  3. "name": "Jeci",
  4. "age": 18,
  5. "phone_number": 11335426987,
  6. "address": "河南省洛阳市",
  7. "hobbies": ["吃饭", "逛街", "打豆豆"]
  8. }
  9. for k in d5.keys():
  10. print(k, d5[k])
  11. """输出:
  12. name Jeci
  13. age 18
  14. phone_number 11335426987
  15. address 河南省洛阳市
  16. hobbies ['吃饭', '逛街', '打豆豆']
  17. """

方式2:遍历字典的值,但不能通过值获取键 dict.values()

  1. d5 = {
  2. "name": "Jeci",
  3. "age": 18,
  4. "phone_number": 11335426987,
  5. "address": "河南省洛阳市",
  6. "hobbies": ["吃饭", "逛街", "打豆豆"]
  7. }
  8. # 方式二:遍历字典的值,但不能通过值获取键 dict.values()
  9. for v in d5.values():
  10. print(v)
  11. """输出:
  12. Jeci
  13. 18
  14. 11335426987
  15. 河南省洛阳市
  16. ['吃饭', '逛街', '打豆豆']
  17. """

方式3:最常用的方法:直接获取键值对  dict.items()

  1. d5 = {
  2. "name": "Jeci",
  3. "age": 18,
  4. "phone_number": 11335426987,
  5. "address": "河南省洛阳市",
  6. "hobbies": ["吃饭", "逛街", "打豆豆"]
  7. }
  8. # 方式3:最常用的方法:直接获取键值对 dict.items()
  9. for k, v in d5.items():
  10. print(k, v)
  11. """输出
  12. name Jeci
  13. age 18
  14. phone_number 11335426987
  15. address 河南省洛阳市
  16. hobbies ['吃饭', '逛街', '打豆豆']
  17. """

、字典的常见操作

1.添加

要向字典中添加新的键值对,可以直接通过赋值操作完成

  1. d5 = {
  2. "name": "Jeci",
  3. "age": 18,
  4. "phone_number": 11335426987,
  5. "address": "河南省洛阳市",
  6. "hobbies": ["吃饭", "逛街", "打豆豆"]
  7. }
  8. print("=================添加==================")
  9. # 当键不存在时,会自动添加你写的键值对
  10. d5["id"] = 101
  11. print(d5["id"]) # 101
  12. # 当键存在时,会修改键对应的值
  13. d5["name"] = "luccy"
  14. print(d5["name"]) # luccy

2.删除

pop()根据键删除键值对,并返回值

  1. print("=================删除==================")
  2. # pop()根据键删除键值对,并返回值
  3. r = d5.pop("age")
  4. print(r) # 18
  5. print(d5) # {'name': 'luccy', 'phone_number': 11335426987, 'address': '河南省洛阳市', 'hobbies': ['吃饭', '逛街', '打豆豆'], 'id': 101}


popitem()默认删除最后一个键值对,并以元组的方式返回这个键值对

  1. # popitem()默认删除最后一个键值对,并返回这个键值对
  2. r = d5.popitem()
  3. print(r) # ('id', 101)
  4. print(d5) # {'name': 'luccy', 'phone_number': 11335426987, 'address': '河南省洛阳市', 'hobbies': ['吃饭', '逛街', '打豆豆']}


clear()清空字典

  1. # clear()清空字典
  2. d5.clear()
  3. print(d5) # {}

3.修改

update()将另一个字典的键值对信息更新到自己的字典中,若键重复,则更新键对应的值
  1. print("=================修改==================")
  2. # update()将另一个字典的键值对信息更新到自己的字典中,若键重复,则更新键对应的值
  3. dict1 = {'a': 1, 'b': 2}
  4. dict2 = {'b': 3, 'c': 4}
  5. dict1.update(dict2)
  6. print(dict1) # {'a': 1, 'b': 3, 'c': 4}

4.查找

get(k)获取键对应值并返回,若键不存在返回 None,
当你get(k,v)时:若键不存在,返回你指定的v,若k存在仍然返回字典中k对应的值
  1. print("=================查找==================")
  2. d5 = {
  3. "name": "luccy",
  4. "age": 18,
  5. "phone_number": 11335426987,
  6. }
  7. # 获取键对应值并返回,若键不存在返回 None
  8. print(d5.get("agg")) # None
  9. print(d5.get("name")) # luccy
  10. # 当查找的键不存在时,我们可以指定默认的返回值,键存在时,依旧返回键对应的值
  11. print(d5.get("agg","鸡蛋")) # 鸡蛋
  12. print(d5.get("name","小米")) # luccy

5.copy拷贝

1.浅拷贝

copy()浅复制:即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典也会随之改变
  1. print("=================浅复制==================")
  2. # copy()浅复制:即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典也会随之改变
  3. old_dict = {"my_list": [1, 2, 3], "my_dict": {"a": 1, "b": 2}}
  4. # 将old_dict字典浅复制给new_dict
  5. new_dict = old_dict.copy()
  6. print(old_dict) # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
  7. print(new_dict) # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
  8. # 改变old_dict中的可变数据类型的数据
  9. old_dict["my_list"].append(4)
  10. old_dict["my_dict"]["c"] = 3
  11. # new_dict也会随着改变
  12. print(old_dict) # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}
  13. print(new_dict) # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}

2.深拷贝

# 引入 copy模块 ,使用deepcopy()
即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典将不再会随之改变
  1. print("=================深复制==================")
  2. # 引入 copy模块 ,使用deepcopy()
  3. import copy
  4. old_dict = {"my_list": [1, 2, 3], "my_dict": {"a": 1, "b": 2}}
  5. # 将old_dict深复制给new_dict
  6. new_dict = copy.deepcopy(old_dict)
  7. print(new_dict) # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
  8. # 改变old_dict中的可变数据类型的数据
  9. old_dict["my_list"].append(4)
  10. old_dict["my_dict"]["c"] = 3
  11. # new_dict不会再随着old_dict改变
  12. print(old_dict) # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}
  13. print(new_dict) # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}

总结

本问主要介绍了python中的字典数据类型,包括字典的定义,创建,遍历方式,和字典几种常用的操作方法,其中字典的集中操作方法,是我们必须要掌握的。学习一种数据类型,就是学习他的方法。本文详细演示了并讲解了其中增,删,改,查和复制的方法,希望能帮助到各位理解字典。


                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1005833
推荐阅读
相关标签
  

闽ICP备14008679号