learn with python-第十章:字典

第十章:字典
目前为止我们学习了三种复合类型,字符串,列表,以及元组,这些类型使用数字作为索引,如果使用其他的类型作为索引值就会得到一个错误。
字典也是一种复复合的数据类型,使用任何不可变的对象作为索引,例如我们可以创建一个字典将英语映射到西班牙语,使用字符串作为索引。
一种创建字典的方式就是创建一个空的字典,然后往字典内加入元素,空字典用{}表示
>>> eng2sp = {}
>>> eng2sp['one'] = 'uno'
>>> eng2sp['two'] = 'dos'
第一个表达式创建一个空的字典,命名为eng2sp;另外的表达式往字典内加入新的元素,我们可以打印这些值:
>>> print eng2sp
{'one': 'uno', 'two': 'dos'}
字典内的元素以键值对存在,每个条目包含一个索引和值,两者之间以冒号分割。
另外一种创建字典的方式就是提供一个类似于输出的键值对的字符串。
>>> eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'}

10.1字典操作
del表达式从字典内删除一个键值对,下面的字典包含了每种水果以及水果的库存量。
>>> inventory = {'apples': 430, 'bananas': 312, 'oranges': 525,
'pears': 217}
>>> print inventory
{'oranges': 525, 'apples': 430, 'pears': 217, 'bananas': 312}
如果其中一个水果被卖光,那么我们可以删除该条目
>>> del inventory['pears']
>>> print inventory
{'oranges': 525, 'apples': 430, 'bananas': 312}
len返回字典的长度
>>> len(inventory)
4

10.2字典方法
方法同函数类似,接受参数并返回一个值,但是其规则不一样,方法keys返回一个字典中的键,不同于函数keys(eng2sp),方法的规则为eng2sp.keys().
values()同key()方式类似,返回字典的值列表
items()键值都会返回,以元组集合的方式返回
>>> eng2sp.items()
[('one','uno'), ('three', 'tres'), ('two', 'dos')]

10.3别名和拷贝
因为字典是可变的,我们需要注意别名,当两个变量指向同一个对象的时候,改变一个的值会影响另外一个。
如果需要改变字典而保持原始字典的拷贝,可以使用copy方法
>>> opposites = {'up': 'down', 'right': 'wrong', 'true': 'false'}
>>> alias = opposites
>>> copy = opposites.copy()

10.4稀疏矩阵
在8.14章中我们使用列表表示矩阵,用矩阵表示一个大部分为非零是一个很好的选择,但是如果为一个包含非常多0的矩阵:
matrix = [ [0,0,0,1,0],
[0,0,0,0,0],
[0,2,0,0,0],
[0,0,0,0,0],
[0,0,0,3,0] ]
一种替代的方法是使用字典,使用一个表示行和列的元组作为key,下面是使用字典表示一个相同的矩阵
matrix = {(0,3): 1, (2, 1): 2, (4, 3): 3}
我们只需要用三个键值对保存三个非零元素,键用元组表示,元组的元素为数值表示非零元素在矩阵中的位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值