首页 > 编程语言 >《探索 Python 字典的奥秘》

《探索 Python 字典的奥秘》

时间:2024-07-15 14:01:23浏览次数:18  
标签:返回 Python dict 奥秘 print 键值 my 字典

在 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字典包含了以下内置函数:

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

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

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

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

内置函数

  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)

制作不易,请多多点赞。

标签:返回,Python,dict,奥秘,print,键值,my,字典
From: https://blog.csdn.net/weixin_61003764/article/details/140384633

相关文章

  • python中逻辑运算符and 和 or 的优先级问题。
    python的说明文档以及教材上、网上都说明and的优先级大于or。但我经过实际操作,发现其中规律似乎并不简单,下面我列举一些代码,来提出我的疑问:有时候or的优先级高,有时候and优先级高,并且并不是从左至右运算。首先说明python当中的and和or运算逻辑如下(这里必须懂):    1......
  • Python篇——继承及多重继承
    引言为什么要用到继承呢?因为继承可以减少代码冗余以及提高代码的重用性。1继承继承用于类的创建,继承描述类与类之间的关系新创建的类是子类,被继承的类是父类子类继承父类的属性和方法1.1场景条件——创建父类定义Person类,有两个属性:name和age,和一个方法greet,输出:Hi,......
  • Python篇——私有属性
    1私有属性的特点Python类中的私有属性是一种实现封装的方式,用于限制对某些属性的直接访问。以下是关于Python类中私有属性的主要特点:1.1命名约定使用双下划线(__)前缀来创建私有属性,例如‘ __private_attr’1.2名称改写(NameMangling)Python会自动将双下划线开头的属......
  • 面试算法(排序)附带c++/python实现
            排序算法是面试中会经常会被问到的一类问题,如果可以掌握较多的排序算法,在面试过程中才更有机会被面试官看重哦,下面我们准备了一些常见的面试算法,并分别给出了c++和python的代码实现,小伙伴们一起学起来吧!冒泡排序(BubbleSort)        基于交换的排序,......
  • python 面试宝典
    50道必备的Python面试题(建议点赞)-阿里云开发者社区(aliyun.com) ▍2、为什么Python执行速度慢,我们如何改进它?Python代码执行缓慢的原因,是因为它是一种解释型语言。它的代码在运行时进行解释,而不是编译为本地语言。为了提高Python代码的速度,我们可以使用CPython、Numba,或......
  • 基于小波分析的糖尿病视网膜病变检测(Python)
    fromscipyimportmiscfromPILimportImagefromskimageimportexposurefromsklearnimportsvmimportscipyfrommathimportsqrt,pifromnumpyimportexpfrommatplotlibimportpyplotaspltimportnumpyasnpimportglobimportmatplotlib.pyplotas......
  • 简单的小波分析入门教程(第一部分,Python)
    importnumpyasnpimportmatplotlib.pyplotaspltimportpywtSimpleSignalAnalysisusingDWT#Generatethesignalt=np.linspace(0,1,1000,endpoint=False)signal=np.cos(2.0*np.pi*7*t)+np.sin(2.0*np.pi*13*t)#ApplyDWTcoeffs=p......
  • Python数据库应用
      通过文件操作可以实现简单的数据操作功能,如果要处理的数据量巨大,则需要将数据存储在数据库中。Python支持多种数据库。  本章主要介绍数据库概念以及结构化数据库查询语言SQL,分析并理解Python自带的轻量级关系数据库SQLlite的使用方法(同样用于MySQL数据库)  文......
  • 基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
    目录0引言1计及风光储能和需求响应的微电网日前经济调度模型1.1风光储能需求响应都不参与的模型1.2风光参与的模型1.3风光和储能参与模型1.4风光和需求响应参与模型1.5风光储能和需求响应都参与模型 2需求侧响应评价2.1 负载率2.2可再生能源消纳率2.3用户......
  • 基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
    目录0引言1计及风光储能和需求响应的微电网日前经济调度模型1.1风光储能需求响应都不参与的模型1.2风光参与的模型1.3风光和储能参与模型1.4风光和需求响应参与模型1.5风光储能和需求响应都参与模型 2需求侧响应评价2.1 负载率2.2可再生能源消纳率2.3用户......