Python 编程核心-Python 字典增删改查|学习笔记

简介: 快速学习 Python 编程核心-Python 字典增删改查

开发者学堂课程【 Python 开发基础入门Python 编程核心-Python 字典增删改查】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/556/detail/7657


Python 编程核心-Python 字典增删改查

内容介绍:

一、 字典 dict

二、 字典 dict 定义 初始化

三、 字典元素的访问

四、 字典增加和修改

五、 字典删除


一、 字典 dict

1. 在 java 语言中叫 map,在 python 中叫字典

2. 字典是 key-value 键值对的数据的集合,习惯称为键值对,是数据的集合,这是一个容器,可以装很多东西,但是装的时候需要 key 和一个 Value。

3. 字典是非常重要的数据结构,和列表一样,列表和字符串目前是最重要的数据结构

4. 字符串是一个简单的值,在容器中,list是非常重要的线性结构的东西,而只字典是非线性中最重要的一种,set可以看成是字典的特例

5. 可变的无序的key不重复,不能索引,set是可变的,元素不重复,字典也是可变的,key不重复表示key是去重的,key在集合中只能有一个


二、 字典 dict 定义 初始化

d= dict()或者d= {}(一般用这个)

dict(**kwargs)使用name=value对初始化一个字典

注意:不能写这样:d = dict(‘a’=1)这是错误的,标识符和字符串是不一样的,字符串是不可以复制的,因为他是不可变的

d = dict(a=1,b=2)这样可以运行,查看b的值,结果:

{‘a’:1,’b’:2}

dict(iterable, **kwarg)使用可迭代对象和name=value对构造字典,不过可迭代对象的元素必须是一个二元结构(二元组或二元列表)

iterable:可迭代对象

d = dict((1,'a'),(2, 'b')))或者

d = dict(([1,'a'][2,'b]))

这是一个可迭代的元组,里面有两个元素,这元素中必须是个二元结构

dict(mapping, **kwarg)使用一个字典构建另一个字典

mapping:映射,用k来映射一个值(从x映射到y)

d = {'a':10, 'b':20, 'c':None, 'd':[1,2,3]}

可以写成这样更加简单

类方法dict.fromkeys(iterable, value)

从一个可迭代对象来做

d = dict.fromkeys(range(5))

fromkeys这个函数在提供key

运行返回一堆空值

d = dict.fromkeys(range(5),0)

运行返回0

标红的为最常用的初始化方式

 

三、字典元素的访问

d[key]:用k来访问

d = dict.fromkeys(range(5),0)

运行id(d[5])就会报错KeyError

表示这里是一个key,key必须是唯一的

运行d[4] =10000就会替换掉d[4]原本的值

这是通过索引来赋值

返回key对应的值value

key不存在抛出KeyError异常

找到元素才能进赋值

运行d.get(4)得到d[4]的值

运行d.get(6)得到None,如果key不存在,他不会抛异常,而是返回None

get(key[ default])

返回key对应的值value

key不存在返回缺省值(默认值),如果没有设置缺省值就返回None

以上功能看需要进行使用

setdefault(key[ default])

返回key对应的值value

key不存在,添加kv对, value为default ,并返回default ,如果default没有设置,缺省为None

运行d. setdefault(100)无返回

然后运行d

会发现后面已经添加上了100标签,但是没有值

再运行d. setdefault(10030000)

d并没有什么改变,因为setdefault是改变的缺省值,但是刚才已经运行一遍了,所以本次并没有运行成功

再次运行运行d. setdefault(101,30000)

就会发现101标签和30000的值已经加上去了


四、 字典增加和修改

d[key] = value

通过key找到元素位置,然后把value

的值传给d,做一个key和value的映射,和列表索引一个道理

将key对应的值修改为value

key不存在添加新的kv对

输入d[102] = 40000就会直接创建新的内容

然后再输入d[102] = 40001,就会替换掉之前的40000

这就是简单的字典的增加和修改

结论:key不存在就创建,key不存在就覆盖

update([other]) -> None

使用另一个字典的kv对更新本字典

key不存在,就添加,相当于同领k赋值

key存在,覆盖已经存在的key对应的值

就地修改

d.update(red=1)

运行将会添加一个value red:1,但是添加的位置不对,他是随机的

d.update(red=1)

d.update('red',2),))

d.update('red':3})

同时运行以三个,因为这是可迭代的,所以得出red值为3

d.update(‘blue’=1)

d.update('blue',2),))

d.update('orange':3})

运行这三个就会得到blue:2,orange:3的值,但是位置还是不对,没在最后,而在中间,所以说字典是无序的,字典的无序体现在key的无序,而set的无序体现在其元素的无序

key 必须是唯一的,但顺序随机


五、字典删除

pop(key[, default])

运行d.pop(‘101’)会报错,因为类型不对

运行d.pop(101)。返回30000代表删除成功,再次运行d查看,发现30000这个值已经被删除

不能直接运行d.pop因为字典是无序的,找不到尾巴在哪,运行将会报错

但是有一个d.popitem()可以实现

key存在,移除它,并返回它的value

key不存在,返回给定的default

default未设置, key不存在则抛出KeyError异常

很少添加default值,一般都是直接pop(key)

 popitem()

随机删除一个值

移除并返回一个任意的键值对

字典为empty ,抛出KeyError异常

如有循环移除,一个控制字数

clear()

清空字典

del语句

a = True//这是一个简单变量赋值

b= [6]//列表赋值语句

d= {a':1, 'b': b, 'c':[1,3,5]}//字典赋值语句

运行以上三个返回[100]

运行del a

这样a和true值的关系就被删除了,再次访问a就找不到会报错

然后再次删除b:del b,运行之后访问b就会找不到了

删除d:del d 发现运行成功,返回:

{‘a’:1,’b’=[6],’c’=[1,3,5]}

然后运行id(b),id(d[‘b’]),结果为:

84577224,84577224

得出结果,两个地址一模一样

所以删除了b,还有d[‘b’]会得到b的值

运行del d[‘c‘],相当于删除了这个引用计数,清掉了kv对,所以k和v就解除关系了,再次运行d就访问不到c的value了

del d['c'] #删除了一个对象[1,3,5] ?

del b[0]//运行是删除的列表元素

再次访问b,返回:

{‘a’:1,’b’=[] }

c= b//把b的地址拿给c

del C//相当于删除c的标识符

删除时必须搞清楚地址,是谁引用谁的,不然会删除失败

del b

b= d[b']

del a['c]看着像删除了一个对象,本质上减少了一个对象的引用, del实际上删除的是名称(他的标识符),而不是对象

相关文章
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
114 80
|
21天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
38 14
|
17天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
27 2
|
1月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
81 2
|
1月前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
55 10
|
1月前
|
机器学习/深度学习 人工智能 数据挖掘
探索Python编程的奥秘
在数字世界的海洋中,Python如同一艘灵活的帆船,引领着无数探险者穿梭于数据的波涛之中。本文将带你领略Python编程的魅力,从基础语法到实际应用,一步步揭开Python的神秘面纱。
48 12
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
1月前
|
关系型数据库 开发者 Python
Python编程中的面向对象设计原则####
在本文中,我们将探讨Python编程中的面向对象设计原则。面向对象编程(OOP)是一种通过使用“对象”和“类”的概念来组织代码的方法。我们将介绍SOLID原则,包括单一职责原则、开放/封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则有助于提高代码的可读性、可维护性和可扩展性。 ####