加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python字典容器的简单示例

发布时间:2020-05-24 20:37:33 所属栏目:Python 来源:互联网
导读:Python字典容器的简单示例

对python这个高级语言感兴趣的小伙伴,下面一起跟随脚本之家 jb51.cc的小编两巴掌来看看吧!

字典(dictionary)

我们都曾经使用过语言词典来查找不认识的单词的定义。语言词典针对给定的单词(比如 python)提供一组标准的信息。这种系统将定义和其他信息与实际的单词关联(映射)起来。使用单词作为键定位器来寻找感兴趣的信息。这种概念延伸到 Python 编程语言中,就成了特殊的容器类型,称为 字典(dictionary)。

字典(dictionary) 数据类型在许多语言中都存在。它有时候称为关联 数组(因为数据与一个键值相关联),或者作为散列表。但是在 Python 中,字典(dictionary) 是一个很好的对象,因此即使是编程新手也很容易在自己的程序中使用它。按照正式的说法,Python 中的 字典(dictionary) 是一种异构的、易变的映射容器数据类型。

创建字典

本系列中前面的文章介绍了 Python 编程语言中的一些容器数据类型,包括 tuple、string 和 list(参见 参考资料)。这些容器的相似之处是它们都是基于序列的。这意味着要根据元素在序列中的位置访问这些集合中的元素。所以,给定一个名为 a 的序列,就可以使用数字索引(比如 a[0] )或片段(比如 a[1:5])来访问元素。Python 中的 字典(dictionary) 容器类型与这三种容器类型的不同之处在于,它是一个无序的集合。不是按照索引号,而是使用键值来访问集合中的元素。这意味着构造字典(dictionary)容器比 tuple、string 或 list 要复杂一些,因为必须同时提供键和相应的值,如清单 1 所示。

清单 1. 在 Python 中创建字典,第 1 部分


# @param 深入探究Python中的字典容器
# @author 脚本之家 jb51.cc|www.www.jb51.cc 

>>> d = {0: 'zero',1: 'one',2 : 'two',3 : 'three',4 : 'four',5: 'five'}
>>> d
{0: 'zero',2: 'two',3: 'three',4: 'four',5: 'five'}
>>> len(d)
>>> type(d)     # Base object is the dict class
<type 'dict'>
>>> d = {}      # Create an empty dictionary
>>> len(d)
>>> d = {1 : 'one'} # Create a single item dictionary
>>> d
{1: 'one'}
>>> len(d)
>>> d = {'one' : 1} # The key value can be non-numeric
>>> d
{'one': 1}
>>> d = {'one': [0,1,2,3,4,5,6,7,8,9]}
>>> d
{'one': [0,9]}

# End www.jb51.cc

 

如这个例子所示,在 Python 中创建字典(dictionary)要使用花括号和以冒号分隔的键-值组合。如果没有提供键-值组合,那么就会创建一个空的 dictionary。使用一个键-值组合,就会创建具有一个元素的 dictionary,以此类推,直至您需要的任何规模。与任何容器类型一样,可以使用内置的 len 方法查明集合中元素的数量。

前面的示例还演示了关于字典(dictionary)容器的另一个重要问题。键并不限制为整数;它可以是任何不易变的数据类型,包括 integer、float、tuple 或 string。因为 list 是易变的,所以它不能作为字典(dictionary)中的键。但是字典(dictionary)中的值可以是任何数据类型的。

最后,这个示例说明了 Python 中字典(dictionary)的底层数据类型是 dict 对象。要进一步了解如何使用 Python 中的 字典(dictionary),可以使用内置的帮助解释器来了解 dict 类,如清单 2 所示。

清单 2. 获得关于字典(dictionary)的帮助


# @param 深入探究Python中的字典容器
# @author 脚本之家 jb51.cc|www.www.jb51.cc 

>>> help(dict)on class dict in module __builtin__:
   dict(object)
| dict() -> new empty dictionary.
| dict(mapping) -> new dictionary initialized from a mapping object's
|   (key,value) pairs.
| dict(seq) -> new dictionary initialized as if via:
|   d = {}
|   for k,v in seq:
|     d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
|   in the keyword argument list. For example: dict(one=1,two=2)
| 
| Methods defined here:
| 
| __cmp__(...)
|   x.__cmp__(y) <==> cmp(x,y)
| 
| __contains__(...)
|   x.__contains__(y) <==> y in x
| 
| __delitem__(...)
|   x.__delitem__(y) <==> del x[y]
...

# End www.jb51.cc

 

关于 dict 类的帮助指出,可以使用构造函数直接创建字典(dictionary),而不使用花括号。既然与其他容器数据类型相比,在创建字典(dictionary)时必须提供更多的数据,那么这些创建方法比较复杂也就不足为奇了。但是,在实践中使用字典(dictionary)并不难,如清单 3 所示。

清单 3. 在 Python 中创建字典(dictionary),第 2 部分


# @param 深入探究Python中的字典容器
# @author 脚本之家 jb51.cc|www.www.jb51.cc 

>>> l = [0,9] 
>>> d = dict(l)(most recent call last):
 File "<stdin>",line 1,in ?: can't convert dictionary 
 update sequence element #0 to a sequence
  
>>> l = [(0,'zero'),(1,'one'),(2,'two'),(3,'three')]
>>> d = dict(l)
>>> d
{0: 'zero',3: 'three'}
>>> l = [[0,'zero'],[1,'one'],[2,'two'],[3,'three']]
>>> d
{0: 'zero',3: 'three'}
>>> d = dict(l)
>>> d
{0: 'zero',3: 'three'}
>>> d = dict(zero=0,one=1,two=2,three=3) 
>>> d
{'zero': 0,'three': 3,'two': 2,'one': 1}
>>> d = dict(0=zero,1=one,2=two,3=three): keyword can't be an expression

# End www.jb51.cc

 

可以看到,创建字典(dictionary)需要键值和数据值。第一次从 list 创建字典(dictionary)的尝试失败了,这是因为没有匹配的键-数据值对。第二个和第三个示例演示了如何正确地创建 字典(dictionary):在第一种情况下,使用一个 list,其中的每个元素都是一个 tuple;在第二种情况下,也使用一个 list,但是其中的每个元素是另一个 list。在这两种情况下,内层容器都用于获得键到数据值的映射。

直接创建 dict 容器的另一个方法是直接提供键到数据值的映射。这种技术允许显式地定义键和与其对应的值。这个方法其实用处不大,因为可以使用花括号完成相同的任务。另外,如前面的例子所示,在采用这种方式时对于键不能使用数字,否则会导致抛出一个异常。

访问和修改字典(dictionary)

创建了 dictionary 之后,需要访问其中包含的数据。访问方式与访问任何 Python 容器数据类型中的数据相似,如清单 4 所示。

清单 4. 访问 dictionary 中的元素


# @param 深入探究Python中的字典容器
# @author 脚本之家 jb51.cc|www.www.jb51.cc 

>>> d = dict(zero=0,three=3)
>>> d
{'zero': 0,'one': 1}
>>> d['zero']
>>> d['three']
>>> d = {0: 'zero',5: 'five'}
>>> d[0]
'zero'
>>> d[4]
'four'
>>> d[6](most recent call last):
 File "<stdin>",in ?: 6
>>> d[:-1](most recent call last):
 File "<stdin>",in ?: unhashable type

# End www.jb51.cc

可以看到,从字典(dictionary)中获取数据值的过程几乎与从任何容器类型中获取数据完全一样。在容器名后面的方括号中放上键值。当然,字典(dictionary)可以具有非数字的键值,如果您以前没有使用过这种数据类型,那么适应这一点需要些时间。因为在字典(dictionary)中次序是不重要的(dictionary 中数据的次序是任意的),所以可以对其他容器数据类型使用的片段功能,对于 字典(dictionary)是不可用的。试图使用片段或者试图从不存在的键访问数据就会抛出异常,指出相关的错误。

Python 中的字典(dictionary)容器也是易变的数据类型,这意味着在创建它之后可以修改它。如清单 5 所示,可以添加新的键到数据值的映射,可以修改现有的映射,还可以删除映射。

清单 5. 修改字典(dictionary)


# @param 深入探究Python中的字典容器
# @author 脚本之家 jb51.cc|www.www.jb51.cc 

>>> d = {0: 'zero',3: 'three'}
>>> d[0]
'zero'
>>> d[0] = 'Zero'
>>> d
{0: 'Zero',3: 'three'}
>>> d[4] = 'four'
>>> d[5] = 'five'
>>> d
{0: 'Zero',5: 'five'}
>>> del d[0]
>>> d
{1: 'one',5: 'five'}
>>> d[0] = 'zero'
>>> d
{0: 'zero',5: 'five'}

# End www.jb51.cc

 

清单 5 演示了几个重点。首先,修改数据值是很简单的:将新的值分配给适当的键。其次,添加新的键到数据值的映射也很简单:将相关数据分配给新的键值。Python 自动进行所有处理。不需要调用 append 这样的特殊方法。对于 dictionary 容器,次序是不重要的,所以这应该好理解,因为不是在字典(dictionary)后面附加映射,而是将它添加到容器中。最后,删除映射的办法是使用 del 操作符以及应该从容器中删除的键。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读