python dict 字典详解

和列表相同,字典也是许多数据的集合,属于可变序列类型。不同之处在于,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的。

字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。

字典类型很像学生时代常用的新华字典。我们知道,通过新华字典中的音节表,可以快速找到想要查找的汉字。其中,字典里的音节表就相当于字典类型中的键,而键对应的汉字则相当于值。

表 1 Python 字典特征
主要特征 解释
通过键而不是通过索引来读取元素 字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
字典是任意数据类型的无序集合 和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素。而字典中的元素是无序的。
字典是可变的,并且可以任意嵌套 字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典。
字典中的键必须唯一 字典中,不支持同一个键出现多次,否则,只会保留最后一个键值对。
字典中的键必须不可变 字典中的值是不可变的,只能使用数字、字符串或者元组,不能使用列表。

Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。

1) 花括号语法创建字典

于字典中每个元素都包含 2 部分,分别是键和值,因此在创建字典时,键和值之间使用冒号分隔,相邻元素之间使用逗号分隔,所有元素放在大括号 {} 中。

Python 字典类型的语法格式如下:

key: valuen 表示各个元素的键值对。需要注意的是,同一字典中各个元素的键值必须唯一。

dictname = {‘key‘:‘value1‘,‘key2‘:‘value2‘,...,‘keyn‘:valuen}
[[email protected] dict]# cat demo.py
#coding:utf-8

scores = {‘语文‘:89,‘数学‘:100,‘化学‘:90}
print(type(scores))
a_scores = {‘语文‘:89,‘数学‘:(44,55),‘化学‘:[90,66]}          #key 键不能是列表会报错
print(a_scores)

[[email protected] dict]# py demo.py
<class ‘dict‘>
{‘语文‘: 89, ‘数学‘: (44, 55), ‘化学‘: [90, 66]}
[[email protected] dict]# 

2) 通过 fromkeys() 方法创建字典

Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建所有键值为空的字典,使用此方法的语法格式为:

dictname = dict.fromkeys(list,value=None)
[[email protected] dict]# cat demo1.py
s_name = {‘语文‘,‘数学‘,‘英语‘}
scores = dict.fromkeys(s_name)
print(type(scores))
print(scores)
[[email protected] dict]# py demo1.py
<class ‘dict‘>
{‘数学‘: None, ‘英语‘: None, ‘语文‘: None}
[[email protected] dict]#

3) 通过 dict() 映射函数创建字典

通过 dict() 函数创建字典的写法有多种,表 2 罗列出了常用的几种方式,它们创建的都是同一个字典 a。

表 2 dict() 函数创建字典
创建格式 注意事项
>>> a = dict(one=1,two=2,three=3) 注意,其中的 one、two、three 都是字符串,但使用此方式创建字典时,字符串不能带引号。
>>> demo = [(‘two‘,2),(‘one‘,1),(‘three‘,3)] #方式1
>>> demo = [[‘two‘,2],[‘one‘,1],[‘three‘,3]] #方式2
>>> demo = ((‘two‘,2),(‘one‘,1),(‘three‘,3)) #方式3
>>> demo = ([‘two‘,2],[‘one‘,1],[‘three‘,3]) #方式4
>>> a = dict(demo)
向 dict() 函数传入列表或元组,而它们中的元素又各自是包含 2 个元素的列表或元组,其中第一个元素作为键,第二个元素作为值。
>>> demokeys = [‘one‘,‘two‘,‘three‘] #还可以是字符串或元组
>>> demovalues = [1,2,3] #还可以是字符串或元组
>>> a = dict(zip(demokeys,demovalues))
通过应用 dict() 函数和 zip() 函数,可将前两个列表转换为对应的字典。

注意,无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。

python 访问字典

和列表、元组不同,它们访问元素都是通过下标,而字典不同,它是通过键来访问对应的元素值。

因为字典中元素是无序的,所以不能像列表、元组那样,采用切片的方式一次性访问多个元素。

Python 更推荐使用 dict 类型提供的 get() 方法获取指定键的值。get() 方法的语法格式为:

dict.get(key[,default])
[[email protected] dict]# cat demo1.py
scores = {‘语文‘:60,‘数学‘:70,‘英语‘:80}
print(scores.get(‘语文‘))
print(scores.get(‘英语‘))     #通过get 函数获取值
del scores                   #del 删除字典
print(scores)

[[email protected] dict]# py demo1.py
60
80
Traceback (most recent call last):
  File "demo1.py", line 5, in <module>
    print(scores)
NameError: name ‘scores‘ is not defined
[[email protected] dict]# 

python  dict 字典基本操作

由于字典属于可变序列,所以我们可以任意操作字典中的键值对(key-value 对)。Python 中,常见的字典操作有以下几种:

    1. 向现有字典中添加新的键值对。
    2. 修改现有字典中的键值对。
    3. 从现有字典中删除指定的键值对。
    4. 判断现有字典中是否存在指定的键值对。

Python字典添加键值对

如果要为 dict 添加键值对,只需为不存在的 key 赋值即可。实现此操作的语法格式如下:
dict[key] = value 
表 1 Python 字典添加键值对语法参数
参数 含义
dict 表示字典名称。
key 表示要添加元素的键。注意,既然是添加新的元素,那么就要保证此元素的键和字典中现有元素的键互不相同。
value 表示要添加数据的值,只要是 Python 支持的数据类型就可以。

原文地址:https://www.cnblogs.com/zy09/p/11597909.html

时间: 2024-08-27 23:38:10

python dict 字典详解的相关文章

python iter,迭代器&amp;dict,字典详解

可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通过内置函数iter()来转变为Iterator. 迭代器为类序列对象提供了一个类序列的接口.python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象.迭代器用起来很灵巧,你可以迭代不是序列但表现处序列行为的对象,例如字典的键.一个文件的行,等等.迭代器的作用如下: >>>

Python之dict字典详解

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型,基本的操作包括如下: (1) len() : 返回字典中 键:值对 的数量 (2) d[k] : 返回关键字对应的值: (3) d[k] = v : 将值关联到键值k上: (4) d

【python进阶】详解元类及其应用2

前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使?type创建带有?法的类 最终你会希望为你的类增加?法.只需要定义?个有着恰当签名的函数并将 其作为属性赋值就可以了.添加实例?法 In [14]: def echo_bar(self):#定义了一个普通的函数 ...: print(self.bar) ...: In [15]: FooChild = type('

使用Python操作Redis详解

之前的五天,过了个愉快的周末,然后将公司AbaseDump的调度部分代码看懂并且在此之上完成了OnlyDump的功能代码,代码不可以公开,今天完工,明天测试,晚上来总结一下这几天学到的一点应用. 使用Python操作Redis详解 ------------------------------------------------------------------------------------------------- 一. 文档说明 本文档仅介绍Redis在Python中的使用,Redis

Python基础知识详解 从入门到精通(七)类与对象

本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详解 从入门到精通(三)语法与函数Python基础知识详解 从入门到精通(四)列表.元组.字典.集合Python基础知识详解 从入门到精通(五)模块管理Python基础知识详解 从入门到精通(六)文件操作PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此

Python字符编码详解(转)

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

Python 字符串方法详解

Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. 在编程中,几乎90% 以上的代码都是关于整数或字符串操作,所以与整数一样,Python 的字符串实现也使用了许多拿优化技术,使得字符串的性能达到极致.与 C++ 标准库(STL)中的 std::string 不同,python 字符串集合了许多字符串相关的算法,以方法成员的方式提供接口,使用起来非常方便. 字符

python开发技术详解(二)

文章目录: 数据类型 数据类型 a=1 b=2 print id(a) print id(b) Out[1]: 163578032 Out[2]: 163578032 python开发技术详解(二)

Python之print详解

Python之print详解 http://www.jb51.net/article/55768.htm print的一些基本用法,在前面的讲述中也涉及一些,本讲是在复习的基础上,尽量再多点内容. eval() 在print干事情之前,先看看这个东东.不是没有用,因为说不定某些时候要用到. 复制代码 代码如下: >>> help(eval)      #这个是一招鲜,凡是不理解怎么用,就用这个看文档 Help on built-in function eval in module __b