Python:字典

本文深入探讨了Python中字典的基本概念、创建方式、操作方法及其内部实现原理。讲解了字典作为映射类型的特点,包括键值对的存储、访问、修改及删除等常见操作,并介绍了如何使用内置函数和方法来高效地管理和利用字典。
摘要由CSDN通过智能技术生成

1.字典是python语言中唯一的映射类型,映射类型对象里的哈希值(键,key)和指向的对象(值,value)是一对多的关系

2.一个字典对象时可变的,他是一个容器类型,字典类型和序列类型的区别就是存储和访问数据的方式不同,序列类型只用数字类型的键,映射类型可以用其他对象类型做键,映射类型的键直接和间接的和存储的数据值相关联。

3.映射类型通常被称为hash表,是因为字典对象就是hash类型的,哈希表是一种数据结构,哈希表中存储的每一个数据叫做一个值,这是根据与他相关的被称为键的数据项进行存储的

4.创建和访问字典

>>> d={'a':1,'b':3}   #初始化一个字典
>>> d
{'a': 1, 'b': 3}

>>> c={}
>>> c['c']=6  #同样可以往字典中添加元素
>>> c
{'c': 6}
>>>

>>> d
{'a': 1, 'b': 3}
>>> d['a']   #通过指定一个键值访问字典中对应的元素
1

5.要想遍历一个字典,我们只需要循环查看他的键值,可以用keys()方法获取循环使用的键值

>>> d
{'a': 1, 'b': 3}
>>> for key in d.keys():
...     print "key=%s,value=%s"%(key,d[key])
...
key=a,value=1
key=b,value=3

6.要判断一个键值是否在字典中,有两种方法,一是使用字典的has_key()方法,或是用in 或者not in操作符,前者已经快被遗忘了

>>> d
{'a': 1, 'b': 3}
>>>
>>>
>>> 'a' in d
True
>>> d.has_key('b')
True
>>> d.has_key('c')
False
>>>

7.删除一个字典

>>> d
{'a': 1, 'b': 3}
>>> del d['a']   #删除键为a的条目
>>> d
{'b': 3}
>>> del d  #删除整个字典,对象已经不存在
>>> d
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined

>>> d={'a':1,'b':3}
>>> d.clear()  #删除字典中的元素,字典还在
>>> d
{}

>>> d={'a':1,'b':3}
>>> d.pop('a')  #删除并返回键为‘a’的条目
1
>>> d
{'b': 3}
>>>

8.字典可以和所有标准类型的操作符一起工作,但却不支持像拼接和重复这样的操作。这些操作对序列有意义,可对映射类型行不通。

9.键查找操作符是唯一仅用于字典类型的操作符,对于字典来说,是用键来查询字典中的元素,所以键是参数,而不是一个索引

10.字典是通过算法来比较的,首先是字典的大小,然后是键,最后是值

11.dict()工厂函数也可以被用于创建字典,如果不提供参数会生成空字典。

>>> d=dict()
>>> d
{}
>>> d['m']=44
>>> d
{'m': 44}
>>>
>>> d=dict(k='m',j=4)   #初始化格式
>>> d
{'k': 'm', 'j': 4}
>>>

12.如果想把一个字典赋值给另一个字典,推荐使用copy()函数
如果是直接赋值

>>> d
{'k': 'm', 'j': 4}
>>> c=d   
>>> d
{'k': 'm', 'j': 4}
>>> c
{'k': 'm', 'j': 4}
>>> d['k']='haha'
一个发生改变,两个都会改变
>>>> d
{'k': 'haha', 'j': 4}
>>> c
{'k': 'haha', 'j': 4}

如果是是使用copy()函数

>>> d
{'k': 'haha', 'j': 4}
>>> c=d.copy()   
>>> c
{'k': 'haha', 'j': 4}
>>> d['k']='m'
>一个发生改变并不会影响另一个字典
>>> d
{'k': 'm', 'j': 4}
>>> c
{'k': 'haha', 'j': 4}

12.三个映射类型的相关函数

>>> d=dict(k='m',j=4)   #初始化格式
>>> d
{'k': 'm', 'j': 4}
>>>

>>> c
{'k': 'haha', 'j': 4}
>>> len(c)
2

>>> hash('ff')  #返回对象的hash值
628535766
>>>

13.映射类型的内建方法

>>> d={'a':1,'b':2,'c':3}
>>> d
{'a': 1, 'c': 3, 'b': 2}
>>> d.get('c',default=0)  #返回c键对应的值,没有就返回default的值
3 

>>> d.items()  "返回一个包含字典中的键,值对的元祖的列表"
[('a', 1), ('c', 3), ('b', 2)]
>>>

>>> d
{'a': 1, 'c': 3, 'b': 2}
>>> c={'k':10}
>>> d.update(c)#与extend()方法类似,如果有相同的键,那么新键将替代旧键对应的值
>>> d
{'a': 1, 'c': 3, 'b': 2, 'k': 10}

>>> m=d.iteritems()
"返回一个迭代器,每次迭代返回一个包含字典中的键,值对的元组"
>>>m
<dictionary-itemiterator object at 0x00000000036DEF98
>>> [(key,value) for key,value in m]
[('a', 1), ('c', 3), ('b', 2), ('k', 10)]
>>>

>>> m=d.iterkeys()
"返回一个迭代器,每次迭代返回一个包含在字典中的键"
>>> m
<dictionary-keyiterator object at 0x00000000036DEF98>
>>> [key for key in m]
['a', 'c', 'b', 'k']

>>> m=d.itervalues()
"返回一个迭代器,每次迭代返回一个包含在字典中的值"
>>> m
<dictionary-valueiterator object at 0x00000000036DEF48>
>>> [key for key in m]
[1, 3, 2, 10]
>>>

14.不允许一个键对应多个值,当有键发送冲突 的时候,取最后一次的赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值