Python随记(三)字典

Python随记(三)字典

字典(Dictionary)

也是序列(sequence)的一种,是另一种可变容器模型。字典的值并没有特殊的顺序,但是都存储在一个特定的键(Key)下。键可以是任意类型对象,如字符串、数字、元组等其他容器模型。

与列表通过编号引用值不同,字典是一种通过名字来引用值的数据结构。这种数据结构称为映射(mapping)。字典是Python中唯一内建的映射类型。

创建字典的目的,就是为了通过轻松查找某个特定的词语(键),从而找到它的定义(值)。

1、  创建字典

字典由键和对应值成对组成。

·每个键和它的值之间用冒号(:)隔开,

·项之间用逗号(,)隔开,

·整个字典用一对大括号{}包起来。如下例所示:

D1= {'Alice': '2341',  'Beth': '9102',  'Cecil': '3258'}

注意:键必须独一无二,但值则不必。

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

     也可以用dict( )类型,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典

     比如有序列:L1 = [(‘aaa’, 111), (‘ABC’, 123) ]

     D =  dict( L1 )

     那么D就被设置为 { ‘aaa’:111,‘ABC’, 123}

2、  字典的基本操作

· led (d) 返回字典d中(键-值)对的数量;

· d[k] 返回关联到键k上的值;

· d[k] = v 将键K关联的值设置为v

· del d[k] 删除键为K的项

· k in d 检查d中是否有含有键为K的项

字典与列表的一些重要区别:

· 成员资格: 表达式k in d查找的是键,这就是我最开始说的,字典通过名字来引用值。

· 键类型:字典的键没必要非得是整型数据,键可以是任意不可变类型。

· 自动添加:即是键起初在字典中并不存在,也可以为它赋值,这样字典就会建立新的项。

3、  字典方法

· dict.clear()-----删除字典内所有元素

· dict.copy()-----返回一个字典的浅复制

           这个操作在副本字典中替换(只是把键对应的值换了)值的时候,原始字典不变

           当副本字典中的值被原地修改(比如删除或添加某值)之后,原始字典也变化

           解决方法是使用函数deecopy

· ict.fromkeys(seq[, val]))-----创建一个新字典,以序列seq 中元素做字典的键,val 为字典所

有键对应的初始值

· dict.get(key, default=None)----- 返回指定键的值,如果值不在字典中返回default值

· dict.has_key(key)----- 如果键在字典dict里返回true,否则返回false

· dict.items()-----以列表返回可遍历的(键, 值) 元组数组

· dict.keys()-----以列表返回一个字典所有的键

· dict.setdefault(key, default=None)----- 和get()类似, 但如果键不存在于字典中,将会添加键并

将值设为default

· dict.update(dict2)----- 把字典dict2的键/值对更新到dict里

· dict.values()-----以列表返回字典中的所有值

· pop(key[,default])----- 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

· popitem()-----随机返回并删除字典中的一对键和值。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java爬坑系列

【Java入门提高篇】Day27 Java容器类详解(九)LinkedList详解

  这次介绍一下List接口的另一个践行者——LinkedList,这是一位集诸多技能于一身的List接口践行者,可谓十八般武艺,样样精通,栈、队列、双端队列、...

643
来自专栏nummy

Python数据科学手册(四)【Pandas 索引和选择】

前面我们介绍了Numpy的索引和选择操作,Pandas也具有类似的操作,这节我们将介绍Pandas对象的索引和选择操作。

573
来自专栏肖洒的博客

刷题问题集合

split()通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔 num 个子字符串. usage; str.split(str=””, num=...

842
来自专栏章鱼的慢慢技术路

多维数组的传递

1384
来自专栏软件开发 -- 分享 互助 成长

二维数组简介与使用

前言 本文将探讨一下关于二维数组在内存中的存储和二维数组在参数传递时的使用。 一、二维数组在内存中的存储 如果定义一个这样的二维数组int a[3][4]={{...

18810
来自专栏Golang语言社区

MySQL动态hash结构

MySQL动态hash结构 1.常用的实现方式 前一段时间一直在研究mysql中的hash结构,大概搞清楚了这种no empty slot的hash...

4007
来自专栏数据结构笔记

python基础类型(二):字典与元组

python中的字典是由键值对组成,每一个键在字典中都是唯一的,值可以是任意类型的对象,但是键必须是不可遍的对象类型(如:字符串、数字、元组等)。

642
来自专栏青枫的专栏

c语言基础学习05_数组和字符串

============================================================================= 涉及...

801
来自专栏武培轩的专栏

Leetcode#344. Reverse String(反转字符串)

532
来自专栏前端进阶之路

JavaScript数据结构04 - 链表

前面我们学习了数组这种数据结构。数组(或者也可以称为列表)是一种非常简单的存储数据序列的数据结构。在这一节,我们要学习如何实现和使用链表这种动态的数据结构,这意...

744

扫码关注云+社区