python学习第三章(字典dict)

本章主要介绍python中一种常用的映射–字典(dict).前面已经介绍了元组,列表,字符串等内建结构,这些结构有一个共同的特点就是可以通过编号(下标)索引到想要访问的值,本章介绍的字典,是通过键访问的,这是一种映射关系,类似与C++,java的map.由于字典的键值必须是可哈希的,而python中不可变的内建结构基本是可哈希的,所以例如元组,数字,字符串都是可以作为字典的键,而列表由于是可变的,并且不能哈希,所以不能作为字典的键.

1 创建字典

字典的创建方式有很多,例如下面的几种方式:

>>>a={1:'lvyang',2:'John'} #以键值对的形式,并用大括号包含即可
>>>a=dict(name='lvyang',age=23) #使用dict函数,输入其他映射或者键值对即可.
>>>a={} #可以先创建一个空字典,然后动态的向字典中添加项
>>>a[1]='lvyang' 

2 基本字典操作

和其他序列一样,有len(),get(),del,in,[]等.使用[]访问对应键值对时,如果要查找的键值对不存在,则解释器报错,使用get方法就可以避免解释器报错.具体功能可以查看官方手册.在此不赘述了.

3 常用方法

  1. clear.clear()用于清除字典内所有内容,这是原地操作,也就是说它会改变原字典本身的内容,并且没用返回值,或者说返回值是None.这里有一点需要注意,清空一个字典内容最好使用clear()方法,而不要简单地赋值为空.
  2. copy.copy()用于复制字典的内容,并返回一个对原字典的浅拷贝对象.深拷贝需要使用deepcopy内置函数.
  3. fromkeys.使用指定的键创建新的字典,每个键初始对应的值为None.
  4. get.用于根据用户输入的键查找相应的值,如果对应的键值对不存在,则返回None.
  5. has_key.用于判断字典中是否包含指定键的项,返回True/False.python3.0中不包含这个函数.
  6. items.用于将字典中所有项按照列表的形式返回,返回的列表中每一项都是一个键值对.由于字典是无序的,所以返回的列表也是无序的.
  7. iteritems.同上,不过该方法返回的是一个迭代器,而不是列表.对于迭代器下面的博客中会讲到.
  8. keys.用于将字典中所有的键以列表的形式返回.
  9. iterkeys.同上,返回迭代器.
  10. pop.用于获取给定键的值,并将这个键值对从字典中移除.
  11. popitem.用于弹出字典中的项,由于不像列表具有有序性,所以字典的popitem是随机弹出一个项.如果只是想要一个一个弹出字典项,不关心顺序的话,这个方法很有效.
  12. setdefault.同get,也是用于获取指定键的值,如果不存在,则可以设定一个默认值返回,并且更新字典.
  13. update.用于利用一个字典更新另一个字典.
  14. values和itervalues.同keys和iterkeys.

4 补充

对于字典的键有两点需要补充:

  1. 键-值之间是单射的关系,即一个键只能对应一个值,如果字典中有两个值对应相同的键,那么会被覆盖.
  2. 键只能使用那些可哈希的对象,简单来说,python中一般不可变的对象都是可哈希的,而可变的对象一般都是不可哈希的.所以数字,字符串,元组都是可以作为键的,而列表不可以,如果一定要使用列表的话,建议先用repr()函数转化成字符串,然后可以使用eval()还原.注意这里不能使用str()函数转化成字符串,原因请看之前写的博客.

当然你也可以用字典做很多事,例如格式化字符串,模拟树型结构等.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值