python基础知识之字典(Dict)

Python中的字典(Dict)是一种非常重要的数据类型,它可以用来存储键值对,并且可以快速地通过键来获取对应的值。本文将详细讲解Python中字典的基础知识,包括字典的创建、操作、遍历、方法等内容。下面让我们逐步展开。

字典的创建

字典的创建可以使用大括号{}或者dict()函数,如下所示:

# 使用大括号创建字典
person = {'name':'张三', 'age':20, 'gender':'男'}

# 使用dict()函数创建字典
person = dict(name='张三', age=20, gender='男')

键值对之间使用逗号分隔,其中键和值之间使用冒号“:”进行关联。

字典的操作

访问字典中的值可以使用中括号[]操作符,如下所示:

person = {'name':'张三', 'age':20, 'gender':'男'}
print(person['name'])    # 输出:张三
print(person['age'])     # 输出:20

如果访问的键不存在,会抛出KeyError异常,程序会中断执行。可以使用get()方法来避免这种情况,如下所示:

person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.get('name'))        # 输出:张三
print(person.get('address'))     # 输出:None
print(person.get('address', '')) # 输出:''

这样,如果键不存在就会返回None,而不会抛出异常。也可以在get()方法中传入第二个参数,如果键不存在就返回该参数。

对于字典中的值,可以使用相应的键来修改或者添加,如下所示:

person = {'name':'张三', 'age':20, 'gender':'男'}
person['age'] = 21   # 修改字典中的值
person['address'] = '北京市'   # 添加新的键值对
print(person)   # 输出:{'name': '张三', 'age': 21, 'gender': '男', 'address': '北京市'}

同样,如果要删除字典中的键值对,可以使用del关键字,如下所示:

person = {'name':'张三', 'age':20, 'gender':'男'}
del person['age']   # 删除字典中的键age及其对应的值
print(person)   # 输出:{'name': '张三', 'gender': '男'}

字典的遍历

可以使用for循环遍历字典的键或者值或者键值对,如下所示:

# 遍历键
person = {'name':'张三', 'age':20, 'gender':'男'}
for key in person:
    print(key)

# 遍历值
person = {'name':'张三', 'age':20, 'gender':'男'}
for value in person.values():
    print(value)

# 遍历键值对
person = {'name':'张三', 'age':20, 'gender':'男'}
for key, value in person.items():
    print(key, value)

字典的方法

Python中的字典还提供了一些实用的方法,可以方便地操作字典。常用的方法如下:

len()

返回字典中键值对的数量:

person = {'name':'张三', 'age':20, 'gender':'男'}
print(len(person))  # 输出:3

keys()

返回字典中所有键的列表:

person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.keys())    # 输出:dict_keys(['name', 'age', 'gender'])

values()

返回字典中所有值的列表:

person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.values())  # 输出:dict_values(['张三', 20, '男'])

items()

返回字典中所有键值对的列表:

person = {'name':'张三', 'age':20, 'gender':'男'}
print(person.items())   # 输出:dict_items([('name', '张三'), ('age', 20), ('gender', '男')])

update()

将一个字典中的键值对更新到另一个字典中:

# 将person2中的键值对更新到person1中
person1 = {'name':'张三', 'age':20}
person2 = {'gender':'男', 'height':175}
person1.update(person2)
print(person1)  # 输出:{'name': '张三', 'age': 20, 'gender': '男', 'height': 175}

clear()

清空字典中的所有键值对:

person = {'name':'张三', 'age':20, 'gender':'男'}
person.clear()
print(person)   # 输出:{}

示例说明

下面给出两个操作字典的示例,分别是使用字典统计字符串中每个字符出现的次数和将一个嵌套字典进行拍平。

统计字符串中每个字符出现的次数

使用字典可以很容易地统计字符串中每个字符出现的次数,如下所示:

text = 'hello, world!'
count = {}
for c in text:
    if c in count:
        count[c] += 1
    else:
        count[c] = 1

print(count)
# 输出:{'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1}

先定义一个空的字典count,然后遍历字符串text中的每个字符,如果字符已经存在于count中,就将对应的值加1,否则将该字符添加到count中,并将对应的值设为1。

将一个嵌套字典进行拍平

有时候我们需要将一个嵌套字典进行“拍平”,即将所有的键值对都放到一个字典中,如下所示:

person = {'name':'张三', 'age':20, 'gender':{'name':'男', 'code':1}}
flatten = {}

def flatten_dict(dic, key=None):
    if not isinstance(dic, dict):
        flatten[key] = dic
        return

    for k, v in dic.items():
        new_key = k if key is None else key + '.' + k
        flatten_dict(v, new_key)

flatten_dict(person)
print(flatten)
# 输出:{'name': '张三', 'age': 20, 'gender.name': '男', 'gender.code': 1}

使用递归方式遍历person中的所有键值对,如果值是一个字典,就递归调用flatten_dict()方法,将当前的键作为新的key参数传入。如果值不是一个字典,就将当前的键值对添加到flatten中,如果当前键已经存在,就会加上新的前缀,如gender.name。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python基础知识之字典(Dict) - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 最好的Python DateTime 库之 Pendulum 长篇解析

    最好的Python DateTime 库之 Pendulum 长篇解析 简介 Pendulum 是一个第三方的 Python DateTime 库,它提供了比 Python 自带的 datetime 更强大、更方便的日期和时间操作功能。特别是对于时区的支持更为友好,常用的涉及时区的操作几乎都已经被 Pendulum 封装好了。本文将介绍 Pendulum 库…

    python 2023年6月2日
    00
  • 解决Python import docx出错DLL load failed的问题

    解决Python import docx出错DLL load failed的问题 在使用Python中的import docx模块操作Word文档时,有时会出现DLL load failed的错误,导致无法正常使用该模块。本文将详细讲解解决Python import docx出错DLL load failed的问题的完整攻略,包括检查Python版本、安装M…

    python 2023年5月13日
    00
  • python进阶教程之词典、字典、dict

    下面我会为您详细讲解“python进阶教程之词典、字典、dict”的完整攻略。 1. 什么是字典? 在Python中,字典是一种可变集合,用于存储键值对。每个键必须是唯一的(在一个字典中),但是多个键可以指向相同的值。字典的键是不可变的(例如,数字、字符串或元组),而值可以是任何类型的Python对象。 字典可以通过 {} 或 dict() 函数创建,并且支…

    python 2023年5月13日
    00
  • Python实现读取json文件到excel表

    接下来我会详细讲解如何用Python实现读取json文件到excel表的完整实例教程,并提供两条示例说明。 1. 准备工作 首先需要掌握以下Python模块: json: 能够处理json格式数据的模块。 pandas: 能够将数据转化为Excel格式并进行导出的模块。 需要注意的是,需要先安装以上两个模块,可以通过pip或其他方法进行安装。 2. 读取js…

    python 2023年5月14日
    00
  • python实习总结(yeild,async,azwait和协程)

    Python实习总结 本文将介绍在Python实习中所了解到的yield、async、await和协程的知识点以及如何使用它们。 yield和生成器 yield是一种特殊的关键字,它可以让函数暂停执行,并将函数的当前状态保持下来。yield常用于生成器中,生成器可以用来迭代一组数据,而不用事先生成整组数据,这样可以节省内存空间。以下是yield的示例代码: …

    python 2023年5月13日
    00
  • 用Python中的NumPy在点(x, y, z)上评估一个3-D多项式,其系数为4D数组

    要使用Python中的NumPy在点(x,y,z)上评估3-D多项式,需要进行以下步骤: 导入NumPy库 在Python脚本或Jupyter Notebook中,首先需要导入NumPy库。可以使用以下代码: import numpy as np 定义3-D多项式的系数数组 定义一个4D数组作为多项式的系数,其中第1、2、3维分别对应于x、y、z的幂次,第4…

    python-answer 2023年3月25日
    00
  • 使用python来玩一次股票代码详解

    使用Python来玩一次股票代码是一项非常有趣的任务,可以帮助我们更好地了解股票市场和Python编程语言。本文将详细讲解如何使用Python来玩一次股票代码,包括获取股票数据、绘制股票图表、计算技术指标等。 步骤1:获取股票数据 获取股票数据是使用Python来玩一次股票代码的第一步。我们可以使用pandas-datareader库来获取股票数据。以下是一…

    python 2023年5月15日
    00
  • python属于软件吗

    Python是一种开源的高级编程语言,它可以在多个操作系统上运行,包括Windows、macOS和Linux等。在软件和编程语言之间存在着一些微妙的交叉,所以要回答“Python是否属于软件”的问题,需要进行以下解释。 Python不是一款软件,而是一种程序设计语言。 它的主要功能是为程序员提供一种有效的方式来编写脚本、应用程序、Web应用程序等等。Pyth…

    python 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部