走进Python世界(五)数据类型 5. 序列类型-字典(Dictionary)

被刻印的时光 ゝ 提交于 2020-03-01 23:11:37

什么是字典

字典是python中唯一的映射类型(哈希表)

字典是无序的

字典对象是可变的,但是字典的键必须使用不可变的对象,并且一个字典中可以使用不同的类型键值

keys() 或者values()返回键列表或者值列表

items()返回键值对的元组


创建字典

一般方法

常用的方式就是直接使用{}

一般语法如下:

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

工厂方法

使用工厂方法dict来创建字典

一般语法如下:

fdict=dict(['x',1],['y',2])

内建方法

使用内建方法fromkeys来创建字典吗,字典元素中的元素巨有相同的值,默认为none

一般语法如下:

ddict={}.fromkeys(('x','y'),-1)

访问字典

使用key来访问

使用key来访问字典的内容

一般语法如下:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict[Alice]

循环遍历

如:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
for key in dict.keys()
  print dict[k]

使用迭代器

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
for key in dict
  print dict[k]

注意如果要访问一个不存在的键,这会得到一个错误,如下所示:

dict['Zara']:
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

字典的更新和删除

更新字典:

可以通过添加一个新条目或项目(即一个键 - 值对),修改现有条目或删除。作为简单的例子,如下图所示在现有条目更新字词:

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

# update existing entry
dict['Age'] = 8; 

# Add new entry
dict['School'] = "DPS School";

删除字典元素:

可以删除单个字典元素或清除字典中的全部内容。也可以删除整个字典在一个单一的操作。

要删除整个字典,只要用del语句。下面是一个简单的例子:

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
dict.pop('Name');     # remove entry with key Name and return its value
del dict ;        # delete entire dictionary
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

这将产生以下结果。注意引发异常,这是因为经过del dict删除,字典已经不存在了:

dict['Age']:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

字典的键的属性:

字典值没有限制。它们可以是任意Python对象,无论是标准的对象或用户定义的对象。但是作为键,是不可以这样的。

要记住字典中的键的两个要点:

(一)不准一个键对应多个条目。这意味着不能有重复的键。当有重复的键,在分配过程中以最后分配的为准。下面是一个简单的例子:

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];

当执行上面的代码,产生以下结果:

dict['Name']:  Manni

(二)键的值字必须是不可变的。这意味着可以使用字符串,数字或元组作为字典的键,但像['key']是不允许的。下面是一个简单的例子:

#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];

当执行上面的代码,产生以下结果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable


内置字典功能和方法:

Python中包括以下字典功能:

SN 方法及描述
1 cmp(dict1, dict2)
比较两个字典的元素
2 len(dict)
字典的长度。这将等同于在字典中的项数
3 str(dict)
产生字典里可打印字符串表示形式
4 type(variable)
返回传递变量的类型。如果传递变量是字典,那么它将返回一个字典类型

Python中包括以下字典方法

SN 方法及描述
1 dict.clear()
删除字典dict中的所有元素
2 dict.copy()
返回字典dict的浅表副本
3 dict.fromkeys()
创建一个新的字典,设置键为seq 和值为value
4 dict.get(key, default=None)
对于键key,返回键,如果不是在字典的值或默认
5 dict.has_key(key)
如果在字典dict中存在键key,则返回true,否则返回 false
6 dict.items()
返回字典的(键,值)元组对的列表
7 dict.keys()
返回字典的键的列表
8 dict.setdefault(key, default=None)
类似get(),但会设定dict[key]=default如果key不是已经在于字典中
9 dict.update(dict2)
增加字典dict2的键值对到字典中
10 dict.values()
返回字典dict的值列表


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!