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实际上删除的是名称(他的标识符),而不是对象

相关文章
|
17天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
23天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
23天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
23天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
10天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
14天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
17天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
36 2
|
18天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
30 1
|
21天前
|
存储 网络协议 IDE
从零起步学习Python编程
从零起步学习Python编程
|
19天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
25 0