Python3 字典

字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值key->value对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中,格式如下所示:

d = {key1: value, key: value2}

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

创建字典
>>> mydict = {}			#创建一个空字典
>>> mydict
{}
>>> type(mydict)
<class 'dict'>
>>> language = {1:'Python',2:'Java',3:'C',4:'C++'}			#创建非空字典
>>> language
{1: 'Python', 2: 'Java', 3: 'C', 4: 'C++'}

利用元组构建字典

>>> name = (["1","Google"],["2","microsoft"])
>>> website = dict(name)
>>> website
{'1': 'Google', '2': 'microsoft'}

或者这样

>>> md = dict(name = "john",age = 20)
>>> md
{'name': 'john', 'age': 20}

使用fromkeys()创建字典

>>> website = {}.fromkeys(("first","second"),"weibo")
>>> website
{'first': 'weibo', 'second': 'weibo'}
访问字典的值

字典类型对象是以键值对的形式存储数据的,所以,只要知道键,就能得到值。本质上就是一种映射关系。

>>> person = {'name1':'john','name2':'tom','name3':'jerry'}
>>> person['name3']
'jerry'
# 若果用字典里没有的键访问数据,则会报以下错误:
>>> person['name4']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name4'
修改字典

新增键/值对

>>> person = {'name1':'john','name2':'tom','name3':'jerry'}
>>> person['name4'] = 'tracy'
>>> person
{'name1': 'john', 'name2': 'tom', 'name3': 'jerry', 'name4': 'tracy'}

修改键/值对

>>> person = {'name1': 'john', 'name2': 'tom', 'name3': 'jerry', 'name4': 'tracy'}
>>> person['name1'] = 'amy'
>>> person
{'name1': 'amy', 'name2': 'tom', 'name3': 'jerry', 'name4': 'tracy'}
删除字典元素

可以删除单一键/值对,也能清空字典

>>> person = {'name1': 'amy', 'name2': 'tom', 'name3': 'jerry', 'name4': 'tracy'}
>>> del person['name4']		# 删除键 'name4'
>>> person
{'name1': 'amy', 'name2': 'tom', 'name3': 'jerry'}

>>> person.clear()		# 清空字典
>>> person
{}
>>> del person			# 删除字典
>>> person
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'person' is not defined
字典键的特性

字典值可以是任何的Python对象,既可以是标准的对象,也可以是用户定义的,但键不行。需要注意的两点是:

  1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,即相当于更新了该键的值。

    >>> person = {'name1': 'john', 'name2': 'tom', 'name3': 'jerry', 'name4': 'tracy'}
    >>> person['name1'] = 'amy'
    >>> person
    {'name1': 'amy', 'name2': 'tom', 'name3': 'jerry', 'name4': 'tracy'}
    
  2. 键必须不可变,所以用数字,字符串或元组等充当,而列表不行,因为列表是可变的。

    >>> person = {['name']:'bruce','age':24}
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'
    
字典基本操作、内置函数及方法

len(dict),计算字典元素个数,即键值对的数量

>>> mydict = {1:"Python",2:"Java",3:"PHP"}
>>> len(mydict)
3

dict[key],返回字典dict中键key的值

>>> mydict[1]
'Python'

key in dict,检查字典dict中是否含有键为key的项

>>> 1 in mydict
True
>>> 4 in mydict
False

dict.clear(),删除字典内所有元素

>>> mydict.clear()
>>> len(mydict)
0
>>> mydict
{}

dict.copy()返回一个字典的浅拷贝

>>> mydict = {1:"Python",2:"Java",3:"PHP"}
>>> a = mydict.copy()
>>> a
{1: 'Python', 2: 'Java', 3: 'PHP'}
>>> id(mydict)
140649544040952
>>> id(a)
140649536920672
# 注意如果字典的值是一个列表的话,此时再使用copy进行拷贝后,对新的对象改变该列表值的话,原字典也会受影响,这点在前面讲列表时已经详细说过,这里不再赘述,如不想原字典受影响可使用深拷贝

dict.fromkeys(seq[,value]),创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。

>>> seq = ('name','age','gender')
>>> d = dict.fromkeys(seq)
>>> d
{'name': None, 'age': None, 'gender': None}
>>> d = dict.fromkeys(seq,10)
>>> d
{'name': 10, 'age': 10, 'gender': 10}

dict.get(key,default=None),返回指定键的值,如果键不在字典中返回default设置的默认值。

>>> d.get('age')
10
>>> d.get('email','None')
'None'

dict.setdefault(key,default=None),与get方法类似,如果键不存在于字典中,返回设置的默认值,但不同的是,会将该键及默认值作为新的键/值对加入字典中。

>>> mydict = {1:'Python',2:'Java',3:'PHP'}
>>> mydict.setdefault(4,'C')
'C'
>>> mydict
{1: 'Python', 2: 'Java', 3: 'PHP', 4: 'C'}

dict.items(),返回一个可迭代对象,形式为可遍历的键值对元组数组。

>>> a = mydict.items()
>>> a
dict_items([(1, 'Python'), (2, 'Java'), (3, 'PHP'), (4, 'C')])

dict.keys(),返回一个可迭代对象,可以使用list()来转换为列表。

>>> b = mydict.keys()
>>> b
dict_keys([1, 2, 3, 4])
>>> list(b)
[1, 2, 3, 4]

dict.values(),返回一个可迭代对象,可以使用list()来转换为列表,列表中的元素为字典中所有的值。

>>> c = mydict.values()
>>> c
dict_values(['Python', 'Java', 'PHP', 'C'])
>>> list(c)
['Python', 'Java', 'PHP', 'C']

dict.pop(key[,default]),删除字典给定键key所对应的值,返回值为被删除的值。key必须给出,否则返回default值。

>>> mydict.pop(4)
'C'
>>> mydict.pop(5,'None')
'None'
>>> mydict.pop(6)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 6

dict.popitem(),随机返回并删除字典中的一对键值对。

>>> mydict = {1: 'Python', 2: 'Java', 3: 'PHP'}
>>> mydict.popitem()
(3, 'PHP')
>>> mydict
{1: 'Python', 2: 'Java'}

dict.update(dict2),把字典参数dict2key/value(键值对)更新到字典dict中。

>>> dict1 = {'name':'Tom','age':12}
>>> dict2 = {'gender':'man'}
>>> dict1.update(dict2)
>>> dict1
{'name': 'Tom', 'age': 12, 'gender': 'man'}
>>> dict3 = {'name':'Jerry'}
>>> dict1.update(dict3)
>>> dict1
{'name': 'Jerry', 'age': 12, 'gender': 'man'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值