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

什么是字典

字典是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的值列表
时间: 2024-10-09 21:27:54

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

1——数据类型和序列类型(基础)

数据类型和序列类型 数据类型 ###--数值类型--### In [1]: HY = 24 #int型 ? In [2]: HY = 2.4 #float型 ? In [3]: HY = True #bool型 ? In [4]: HY = 24j #complex型 ###--序列类型--###? In [6]: HY = [2, 4, 24] #列表(可变) ? In [7]: HY = (24, 'wum', 'mor') #元组(不可变) ? In [8]: HY = '进阶咯!6666

6、python基本数据类型之序列类型

前言:python的基本数据类型可以分为三类:数值类型.序列类型.散列类型,本文主要介绍序列类型及其通用操作 一.序列类型 1)字符串(str):用单引号('),双引号("),三引号(三单引号'''或三双引号""")来表示 2)列表(list):用[ ]中括号表示 3)元组(tuple):用()小括号表示 二.字符串str 1.定义 字符串定义:单引号.双引号.三引号.str() 引号都是成对出现 空字符串:s ='' (单引号对里没有任何数据) 空字符:s ='

Python基本语法_基本数据类型_序列类型详解

目录 目录 序列 序列的标准操作符 切片操作符 一个例子 序列的功能函数 enumerate 枚举出序列对象的元素 len 获取序列对象的长度 min 取出sequence中的最小值 max 取出sequence中的最大值 reversed 返回一个逆序访问的迭代器 sorted 序列的排序 sum 计算序列中的各项元素和 zip 混合两个序列对象 all 检测sequence中各项元素是否均为True any 检测序列中的任意元素是否为True 序列 序列是一类基本数据类型(字符串/列表/元组

《转》python学习(6)序列类型-字符串

转自 http://www.cnblogs.com/BeginMan/archive/2013/06/08/3125502.html 二.序列类型 包含字符串.列表.元祖.模式都一样,举一反三即可.如: 1.成员关系操作符(in / not in ) 2.关于切片 1 2 3 4 5 6 s=[1,2,3,4] print s[::-1]     #下标范围[0,0],步长是-1,则从后(4,包括4)往前切取所有,输出:[4, 3, 2, 1] print s[::-2]     #下标范围[0

Python的序列类型——字典

字典 字典dict,存储的元素是一种无序的键值对(K-V),字典的K值为任意不可变数据类型(如:字符串. 数字.元组),V值为任意数据类型.在计算机内部保存数据的时候是用哈希表表示的,列表不支持转化为 哈希表的原因是K是变化的(列表的可以增.删.改),而元组却可以用哈希表表示.由于它的无序性,使 得它不能像列表那样使用切片.但是我们能对字典的中的K—Y值进行更改.使用for循环时(不能使用while), 默认之只输出K值,不输出V值.当然,在字典中也提供了相应的内置函数弥补这个缺陷. 还有一点需

python 基础笔记 — 数据类型之序列(3)

列表 VS 元组 一个经常会被问到的问题是,"为什么我们要区分元组和列表变量?"这个问题也可以被表述为"我们真的需要两个相似的序列类型吗?",一个原因是在有些情况下,使用其中的一种类型要优于使用另一种类型.最好使用不可变类型变量的一个情况是,如果你在维护一些敏感的数据,并且需要把这些数据传递给一个并不了解的函数(或许是一个根本不是你写的 API),作为一个只负责一个软件某一部分的工程师,如果你确信你的数据不会被调用的函数篡改,你会觉得安全了许多. 一个需要可变类型参

Python基础教程笔记十四:字典(Dictionary)

Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d = {key1 : value1, key2 : value2 } 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一. >>>dict = {'a': 1, 'b': 2, 'b': '3'}; >>> dict

走进Python世界(五)数据类型 3. 序列类型-元祖(tuple)

什么是序列 列表,元组和字符串都是序列. 序列的两个主要特点是索引操作符和切片操作符 索引操作符让我们可以从序列中取一个值 切片操作符让我们能够获取序列的一个切片,即一部分序列 索引同样可以是负数,位置是从序列尾开始计算的 因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取的倒数第二个项目 切片操作符是序列名后跟一个方括号,方括号内有一对可选的数字,并用冒号分隔 注意冒号是必须的,数字是可选的 切片操作符中的第一个数表示开始位置,第二个数表示切片到哪里结束. 如果

走进Python世界(五)数据类型 3. 序列类型-列表(List)

什么是列表 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目 列表是可变的数据类型 列表的组成:用[]表示列表,包含了多个以逗号分隔开 数字,或者字符串. 列表的基本操作 列表是序列的一种,它也具有序列的基本操作 如: +,*,max,min等操作.此外 因为列表是可变的序列集合,它支持一些常见的 读写跟新操作 如: 操作 列子 描述 取值 list=['mileo',30,'maile'] list[0],list[0:2] 其实就是序列的切片和索引操作 添加 list