首页 > 编程语言 >Python 字典(Dict)详解与实战应用

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

时间:2024-07-14 22:26:59浏览次数:11  
标签:Python 键值 详解 dict print Dict d5 my 字典

目录

前言

一、字典的定义和创建

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中,字典可以通过花括号{}直接定义,键和值之间用冒号:分隔,键值对之间用逗号,分隔。

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

2.使用dict()函数创建

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

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

二、字典的三种遍历方式

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

# 方式1:遍历字典的键,通过键获取值  dict.keys()
d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
for k in d5.keys():
    print(k, d5[k])
"""输出:
name Jeci
age 18
phone_number 11335426987
address 河南省洛阳市
hobbies ['吃饭', '逛街', '打豆豆']
"""

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

d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
# 方式二:遍历字典的值,但不能通过值获取键  dict.values()
for v in d5.values():
    print(v)
"""输出:
Jeci
18
11335426987
河南省洛阳市
['吃饭', '逛街', '打豆豆']
"""

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

d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
# 方式3:最常用的方法:直接获取键值对  dict.items()
for k, v in d5.items():
    print(k, v)
"""输出
name Jeci
age 18
phone_number 11335426987
address 河南省洛阳市
hobbies ['吃饭', '逛街', '打豆豆']
"""

、字典的常见操作

1.添加

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

d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
print("=================添加==================")
# 当键不存在时,会自动添加你写的键值对
d5["id"] = 101
print(d5["id"])  # 101
# 当键存在时,会修改键对应的值
d5["name"] = "luccy"
print(d5["name"])  # luccy

2.删除

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

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


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

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


clear()清空字典

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

3.修改

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

4.查找

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

5.copy拷贝

1.浅拷贝

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

2.深拷贝

# 引入 copy模块 ,使用deepcopy()
即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典将不再会随之改变
print("=================深复制==================")
# 引入 copy模块 ,使用deepcopy()
import copy

old_dict = {"my_list": [1, 2, 3], "my_dict": {"a": 1, "b": 2}}
# 将old_dict深复制给new_dict
new_dict = copy.deepcopy(old_dict)
print(new_dict)  # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
# 改变old_dict中的可变数据类型的数据
old_dict["my_list"].append(4)
old_dict["my_dict"]["c"] = 3
# new_dict不会再随着old_dict改变
print(old_dict)  # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}
print(new_dict)  # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}

总结

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



标签:Python,键值,详解,dict,print,Dict,d5,my,字典
From: https://blog.csdn.net/2201_76129403/article/details/140394280

相关文章

  • Python 潮流周刊第 2 季完结了,分享几项总结
    我订阅了很多的周刊/Newsletter,但是发现它们都有一个共同的毛病:就是缺乏对往期内容的整理,它们很少会对内容数据作统计分析,更没有将内容整理成合集的习惯。在自己开始连载周刊后,我就想别开生面,除了每周更新正刊外,还计划定期做一些盘点。我认为过往周刊值得被串联起来,形成合集后,既......
  • 基于SpringBoot+Hadoop+python的物品租赁系统(带1w+文档)
    基于SpringBoot+Hadoop+python的物品租赁系统(带1w+文档)基于SpringBoot+Hadoop+python的物品租赁系统(带1w+文档)物品租赁系统是电子、信息技术相结合,是一种必然的发展趋势。以互联网为基础,以服务于广大用户为目的,发展整体优势,扩大规模,提升服务质量,提高物品租赁的......
  • Python函数进阶
    1.多返回值返回值为return返回给上级函数的值,需要注意的是,与C和C++不同,Python中可以有多返回值。多返回值deftest_return():return1,2x,y=test_return()print(x)print(y)特点:按照返回值的顺序,写对应顺序的多个变量接收即可变量之间用逗号隔开支持不同......
  • Python Scrapy爬虫、调试Scrapy程序、爬取的数据保存到数据库
    前言从0配置Scrapy爬虫程序,并记录如何调试脚本,保存数据到数据库。这里我们以Scrapy推荐的官方练习项目为例进行实战演练配置1初始环境安装Anaconda,Anaconda是一个软件包管理和环境管理系统。安装PyCharm,Python编辑器2创建Scrapy项目并运行打开AnacondaPrompt......
  • Python监控服务器状态程序
    前言最近服务器有几次被安全狗断网,没找到好的解决方法。就先写了个Python程序监控网络状态,断网5分钟强制重启服务器的脚步。代码importpsutilimportsocketimporttimeimportosimportdatetimedefcheck_internet_connection():try:socket.creat......
  • 【Playwright+Python】手把手带你写一个自动化测试脚本
     如何使用代理方式打开网页 在playwright.chromium.launch()中传入proxy参数即可,示例代码如下:1、同步写法:fromplaywright.sync_apiimportsync_playwrightproxy={'server':'http:/127.0.0.1:8080'}defrun():withsync_playwright()asp:......
  • 万字长文:Go 语言流行 ORM 框架 GORM 使用详解
    万字长文:Go语言流行ORM框架GORM使用详解原创 江湖十年 Go编程世界 2024年05月18日08:41 浙江 4人听过GORM是Go语言中最受欢迎的ORM库之一,它提供了强大的功能和简洁的API,让数据库操作变得更加简单和易维护。本文将详细介绍GORM的常见用法,包括数据库连接......
  • Python爬虫教程第二篇:进阶技巧与实战案例
    Python爬虫教程第二篇:进阶技巧与实战案例在上一篇教程中,我们学习了Python爬虫的基础概念、基本流程以及一个简单的入门实践案例。本篇教程将带领大家进一步探索Python爬虫的进阶技巧,并提供一个实战案例,帮助大家提升爬虫技能。一、进阶技巧处理JavaScript渲染的页面在We......
  • 教你创建Python函数信手拈来哦(递归函数)
    Python中函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段函数能提高应用的模块性,和代码的重复利用率Python提供了许多内建函数,比如print()、type()、类型转换函数等等用户也可以自己创建函数,这被叫做用户自定义函数一、定义函数1.创建函数函数使用def关键......
  • python中缺失值处理——在因子选股中的应用
    ​在因子选股当中,如果直接对整个数据库进行操作,对于股价历史数据,经常出现由于股票退市等造成的缺失值,但是在回测时,如果只用有值的股票,会由于维度不匹配而报错。因此,经常需要把整张数据表中的非空数据取出,进行处理,再填回因子矩阵中。由于基本上每次都会用到,所以本人专门写......