《探索 Python 字典的奥秘》

在 Python 中,字典(Dictionary)是一种非常强大和灵活的数据结构。它以键值对(Key-Value Pair)的形式存储数据,类似于现实生活中的字典,通过查找单词(键)来获取其释义(值)。

一、字典的定义

字典可以使用花括号 {} 来创建,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔,dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。格式如下所示:

d = {key1 : value1, key2 : value2, key3 : value3 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

一个简单的字典实例:

dict_1 = {"name": "张三", "age": 16}

也可以用另一种方式来创建字典

dict_2 = dict([("name", "张三"), ("age", 15)])

创建空字典

使用大括号 { } 创建空字典:

# 使用大括号 {} 来创建空字典
d0 = {}
 
# 打印字典
print(d0 )
 
# 查看字典的数量
print("Length:", len(d0 ))
 
# 查看类型
print(type(d0 ))

代码运行结果如下:

访问字典里的值

把相应的键放入到方括号中,如下实例:

d1 = {'Name': '张三', 'Age': 18, 'grade': '优秀'}

print("tinydict['Name']: ", d1['Name'])
print("tinydict['Age']: ", d1['Age'])

以上实例运行结果如下:

如果用字典里没有的键来访问数据会报错。

还可以用for循环来遍历字典,以下为演示:

my_dict = {"name": "张三", "性别": "男" , "爱好": "唱跳"}

# 获取键
for k in my_dict.keys():
    print(k, my_dict[k])
# 获取值
for v in my_dict.values():
    print(v, my_dict)
# 获取键值对
for item in my_dict.items():
    print(item)

# k, v分别是键和值
for k, v in my_dict.items():
    print(k, v)

运行结果如下:

修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

my_dict = {'Name': '张三', 'Age': 18, 'grade': '优秀'}

my_dict['Age'] = 18   # 更新 Age
my_dict['School'] = "哈尔冰佛学院" # 添加信息

print("tinydict['Age']: ", my_dict['Age'])
print("tinydict['School']: ", my_dict['grade'])

以下为运行结果:

  1. 字典的删除操作

可以使用 pop(key) 根据键删除指定的键值对,并返回被删除的值;使用 popitem() 随机删除并返回一个键值对。

deleted_value = dict_1.pop('city') 
deleted_pair = dict_1.popitem() 

字典内置函数&方法

Python字典包含了以下内置函数:

序号 函数及描述 实例
1 len(dict)
计算字典元素个数,即键的总数。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> len(tinydict)
3
2 str(dict)
输出字典,可以打印的字符串表示。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> str(tinydict)
"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
3 type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> type(tinydict)
<class 'dict'>

Python字典包含了以下内置方法:

序号 函数及描述
1 dict.clear()
删除字典内所有元素
2 dict.copy()
返回一个字典的浅复制
3 dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 dict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值
5 key in dict
如果键在字典dict里返回true,否则返回false
6 dict.items()
以列表返回一个视图对象
7 dict.keys()
返回一个视图对象
8 dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 dict.update(dict2)
把字典dict2的键/值对更新到dict里
10 dict.values()
返回一个视图对象
11 pop(key[,default])
删除字典 key(键)所对应的值,返回被删除的值。
12 popitem()
返回并删除字典中的最后一对键和值。

以下是对上面方法的详细介绍:

内置函数

  1. len(dict)

    len() 函数用于获取字典中键的数量。通过传入字典作为参数,它会返回字典中键值对的总数。例如对于 tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} ,使用 len(tinydict) 可以得到 3。

  2. str(dict)

    str() 函数将字典转换为可打印的字符串形式。它会以字符串的形式展示字典的键值对内容。如您给出的示例,对于字典 tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} ,使用 str(tinydict) 得到 "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" 。

  3. type(variable)

    type() 函数用于确定传入变量的数据类型。当传入的变量是字典时,它会返回 <class 'dict'> ,用于判断变量的类型是否为字典。

内置方法

dict.clear()

此方法用于清空字典中的所有键值对,使字典变为一个空字典。

示例:

   my_dict = {'a': 1, 'b': 2}
   my_dict.clear()
   print(my_dict)  

输出: {}

dict.copy()

该方法创建并返回一个字典的浅复制。浅复制意味着新字典中的键值对与原字典相同,但如果字典的值是可变对象(如列表、字典等),则新字典和原字典中的这些可变对象会指向相同的内存地址。

示例:

   original_dict = {'a': [1, 2, 3], 'b': 2}
   copied_dict = original_dict.copy()
   original_dict['a'].append(4)
   print(copied_dict)  

输出: {'a': [1, 2, 3, 4], 'b': 2}

dict.fromkeys()

它可以根据给定的序列(如列表、元组等)创建一个新的字典,其中序列中的元素作为新字典的键,并且可以指定所有键对应的初始值(如果没有指定,默认初始值为 None )。

示例:

   keys = ['a', 'b', 'c']
   new_dict = dict.fromkeys(keys, 0)
   print(new_dict)  

输出: {'a': 0, 'b': 0, 'c': 0}

dict.get(key, default=None)

通过指定的键来获取对应的值,如果指定的键不存在于字典中,将返回您设置的默认值(默认情况下为 None )。

示例:

   my_dict = {'a': 1, 'b': 2}
   print(my_dict.get('a'))  
   print(my_dict.get('c', -1)) 

输出: 1 -1

key in dict

这是一个用于检查指定的键是否存在于字典中的操作符。如果键存在,返回 True;否则,返回 False 。

示例:

   my_dict = {'a': 1, 'b': 2}
   print('a' in my_dict)  
   print('c' in my_dict) 

输出: True False

dict.items()

该方法返回一个包含字典中所有键值对的视图对象,您可以对这个视图对象进行迭代操作。

示例:

   my_dict = {'a': 1, 'b': 2}
   for key, value in my_dict.items():
       print(f'Key: {key}, Value: {value}')
  1. dict.keys()

    返回一个包含字典所有键的视图对象。

    示例:

   my_dict = {'a': 1, 'b': 2}
   for key in my_dict.keys():
       print(key)
  1. dict.setdefault(key, default=None)

    如果指定的键存在于字典中,该方法返回对应的值;如果键不存在,它会将键和您指定的默认值添加到字典中,并返回该默认值。

    示例:

   my_dict = {'a': 1, 'b': 2}
   print(my_dict.setdefault('a', 0))  
   print(my_dict.setdefault('c', 3)) 
   print(my_dict) 

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

  1. dict.update(dict2)

    将另一个字典 dict2 的键值对更新添加到当前字典中,如果存在相同的键,对应的值会被 dict2 中的值覆盖。

    示例:

   my_dict = {'a': 1, 'b': 2}
   new_dict = {'b': 3, 'c': 4}
   my_dict.update(new_dict)
   print(my_dict) 

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

  1. dict.values()

返回一个包含字典所有值的视图对象。

示例:

   my_dict = {'a': 1, 'b': 2}
   for value in my_dict.values():
       print(value)
  1. pop(key[,default])

根据指定的键删除并返回对应的键值对的值,如果键不存在且指定了默认值,返回默认值;如果键不存在且没有指定默认值,会引发 KeyError 错误。

示例:

   my_dict = {'a': 1, 'b': 2}
   print(my_dict.pop('a'))  

输出: 1

  1. popitem()

随机删除并返回字典中的一个键值对,如果字典为空,会引发 KeyError 错误。

   my_dict = {'a': 1, 'b': 2}
   print(my_dict.popitem())  

输出: 一个键值对,例如 ('a', 1) 或 ('b', 2)

制作不易,请多多点赞。

相关推荐

  1. Python语言证明:探索编程之道奥秘

    2024-07-15 21:26:01       25 阅读
  2. Python入门Git:探索版本控制奥秘

    2024-07-15 21:26:01       30 阅读
  3. 探索Python元类奥秘:定义与实用应用

    2024-07-15 21:26:01       19 阅读
  4. Python怎么写Web:深入探索Python在Web开发中奥秘

    2024-07-15 21:26:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 21:26:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 21:26:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 21:26:01       58 阅读
  4. Python语言-面向对象

    2024-07-15 21:26:01       69 阅读

热门阅读

  1. Qt中QTimer类使用简介

    2024-07-15 21:26:01       18 阅读
  2. 数仓实践:数据仓库建设公共规范指南

    2024-07-15 21:26:01       18 阅读
  3. 【LeetCode力扣】007. 整数反转(Python)

    2024-07-15 21:26:01       21 阅读
  4. Spark 和 Kafka 处理 API 请求与返回数据DEMO

    2024-07-15 21:26:01       18 阅读
  5. 【Kylin】Kylin入门

    2024-07-15 21:26:01       16 阅读
  6. 变态的python元组

    2024-07-15 21:26:01       20 阅读