python基础知识之字典(Dict)

yizhihongxing

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 通过可变参数计算n个数的乘积方法

    当传入的参数数量不确定时,可使用可变参数,例如计算 n 个数的乘积。在 Python 中,使用可变参数可以通过在形参前加 * 来实现,例如 *args 表示任意多个无名参数。 以下是计算 n 个数的乘积的 Python 函数代码: def product(*args): """ 计算 n 个数的乘积 :param args: 任…

    python 2023年6月5日
    00
  • python字符串驻留机制的使用范围知识点详解

    Python字符串驻留机制的使用范围知识点详解 什么是Python字符串驻留机制? Python中的字符串是不可变的对象,即一旦创建就不能更改。但是,为了提高程序的性能,Python引入了字符串驻留机制,即对于相同的字符串字面值,在内存中只保留一份副本,从而节省内存空间和比较字符串的时间。 当我们使用字面值方式创建字符串时,如果创建的字符串与先前创建的字符串…

    python 2023年6月5日
    00
  • Python3利用print输出带颜色的彩色字体示例代码

    下面我来分享一下“Python3利用print输出带颜色的彩色字体”的完整攻略。 什么是彩色字体? 彩色字体是指可以通过指定字体颜色来显示不同的文本效果,如红色、绿色、蓝色等。 利用print输出带颜色的彩色字体的方法 我们可以使用ANSI转义码(escape sequences)来给Python中的字符串设置颜色。ANSI转义码是控制终端输出的一种方式。下…

    python 2023年6月5日
    00
  • Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能

    首先我们来讲一下 Python + selenium + requests 实现 12306 全自动抢票的攻略。 什么是 Python + selenium + requests Python:一种高级编程语言,常用于数据处理、网络爬虫等领域。 selenium:一个用于自动化测试的工具,可以模拟浏览器的行为操作网页,实现自动化进行网页操作的功能。 requ…

    python 2023年5月19日
    00
  • 一行代码让 Python 的运行速度提高100倍

    当我们需要处理一些大规模数据时,Python 在速度上表现往往不如 C++ 或 Java 等编程语言。但是,Python 的一个特性是它允许用户使用外部库,其中一些外部库是用 C++ 或其他高效编程语言编写的。这使得 Python 中的代码可以非常高效,甚至可以接近 C++ 中的代码。因此,使用这些外部库的内置函数,可以使 Python 代码在一些情况下运行…

    python 2023年6月6日
    00
  • python编码最佳实践之总结

    Python编码最佳实践是指在编写Python代码时应该遵循的一些规范和约定。这些规范和约定可以提高代码的可读性、可维护性和可扩展性。本文将详细介绍Python编码最佳实践,包括命名规范、代码风格、异常处理、模块导入等内容。 命名规范 在Python编码中,命名规范是非常重要的。以下是一些常用的命名规范: 变量名应该使用小写字母,单词之间用下划线分隔。 函数…

    python 2023年5月14日
    00
  • Python 输出详细的异常信息(traceback)方式

    Python 输出详细的异常信息(traceback)方式 在Python编程中,经常会遇到程序出错的情况。Python提供了详细的异常信息(traceback),以帮助我们定位问题所在,从而更容易地解决问题。本文将介绍几种常见的输出详细的异常信息的方式。 1. 使用traceback模块 Python内置了一个traceback模块,可以用来输出详细的异常…

    python 2023年5月13日
    00
  • python中根据字符串调用函数的实现方法

    在Python中,可以使用字符串的形式调用函数。这个过程需要使用到Python内置的两个函数getattr()和callable()。下面是具体实现步骤: 使用getattr()获取函数,并将函数赋给一个变量 python func = getattr(module, func_name_str) 其中module表示包含函数的模块的名字,func_name…

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