课时25 字典:当索引不好用时(1)

目录

 

一、字典(哈希、关系数组)

二、创建和访问字典


一、字典(哈希、关系数组)

在Python中也有字典,又称为哈希hash,关系数组

字典是Python中唯一的映射类型,映射是数学上的一个术语,指的是两个元素集合之间元素相互‘对应’关系,如图所示:

映射类型区别于序列类型,序列类型以数组的形式进行存储,通过索引的方式来获取相对应位置的值,一般索引值与对应位置存储的数据是毫无关系的,例如:

>>> band = ['李宁','耐克','阿迪达斯','工作室']
>>> slogan = ['一切皆有可能','just do it','impossible is nothing','让编程改变世界']
>>> print('工作室的口号是:',slogan[band.index('工作室')])

工作室的口号是: 让编程改变世界

列表band和slogan的索引和相对应的值是没有任何关系的。唯一可以看出的是两个列表,索引号相同的元素是有关系的(品牌对应的slogan)。所以通过band.index('工作室')语句,间接的通过品牌查找对应口号的功能。

所以,需要有字典这种映射类型的出现

二、创建和访问字典

  • 直接创建字典,key:value,中间用逗号隔开

字典的使用非常简单,它有标志性符号:大括号{}定义。字典由多个键以及对应的值共同构成,每一对键值组合称为项。注意:字典和序列不同,序列讲究顺序,字典讲究映射,不讲顺序

>>> dict1 = {'李宁':'一切皆有可能','耐克':'just do it','阿迪达斯':'impossible is nothing','工作室':'让编程改变世界'}
>>> print('工作室的口号是:',dict1['工作室'])

工作室的口号是: 让编程改变世界

字典的键必须是独一无二的,值可以取任何数据类型,但必须是不可变的(如字符串,数字或元组)

下面的例子也可以看出,字典支持index索引

>>> dict2 = {1:'one',2:'two',3:'three'}
>>> dict2
{1: 'one', 2: 'two', 3: 'three'}
>>> dict2[2]
'two'

定义一个空字典,直接用一对大括号即可

>>> dict3 ={}
>>> dict3
{}
  • 使用dict()创建字典

注意这里面的很多括号。因为dict的参数可以是一个序列,但不能是多个,所以要打包一个元组序列(列表也可以)

>>> dict3 = dict((('F',70),('i',105),('s',115),('h',104)))
>>> dict3
{'F': 70, 'i': 105, 's': 115, 'h': 104}
  • 使用dict()创建字典,但使用提供映射关系的参数来创建字典

注意此时键的位置不可以加上字符串的引号,否则会报错

>>> dict4 = dict(小甲鱼='让编程改变世界',孔子='知之为知之不知为不知')
>>> dict4
{'小甲鱼': '让编程改变世界', '孔子': '知之为知之不知为不知'}
>>> dict4 = dict('小甲鱼'='让编程改变世界','孔子'='知之为知之不知为不知')
SyntaxError: keyword can't be an expression
  • 直接给字典赋值

如果键存在,则改写键对应的值:如果键不存在,则新建一个新的键并赋值

>>> dict4
{'小甲鱼': '让编程改变世界', '孔子': '知之为知之不知为不知'}
>>> dict4['孔子']='三人行必有我师'
>>> dict4
{'小甲鱼': '让编程改变世界', '孔子': '三人行必有我师'}
>>> dict4['李宁']='一切皆有可能'
>>> dict4
{'小甲鱼': '让编程改变世界', '孔子': '三人行必有我师', '李宁': '一切皆有可能'}
  • 多种创建方法
>>> a = dict(one = 1,two = 2)
>>> b = {'one':1,'two':2}
>>> c = dict(zip(['one','two'],[1,2]))
>>> d = dict([('one',1),('two',2)])
>>> e = dict({'one':1,'two':2})
>>> a == b == c == d == e
True
>>> a
{'one': 1, 'two': 2}
>>> b
{'one': 1, 'two': 2}
>>> c
{'one': 1, 'two': 2}
>>> d
{'one': 1, 'two': 2}
>>> e
{'one': 1, 'two': 2}
>>> 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值