字典:python的基础数据类型

字典

简介

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

注意python3.5之前以及python3.5字典是无序的,而从python3.6开始,是有序的。

Changed in version 3.7: Dictionary order is guaranteed to be insertion order. This behavior was implementation detail of CPython from 3.6.

字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

操作

dic = {'book' : 'python cookbook', 'author' : ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages' : 756}

通过键值方式添加:有此键则更改对应的值,无此键则添加

>>> dic['book'] = 'Python Cookbook'
>>> dic
{'book': 'Python Cookbook', 'author': ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages': 756}

>>> dic['publish'] = '人民邮电出版社'
>>> dic
{'book': 'Python Cookbook', 'author': ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages': 756, 'publish': '人民邮电出版社'}

通过setdefault添加:有此key则不做任何操作返回原key对应的值,无此key则添加并返回新key对应的值。

>>> dic = {'book' : 'python cookbook', 'author' : ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages' : 756}
>>> dic.setdefault('book', 'Python Cookbook')
'python cookbook'

>>> dic = {'book' : 'python cookbook', 'author' : ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages' : 756}
>>> dic.setdefault('publish','人民邮电出版社')
'人民邮电出版社'

pop:通过键来删除键值对,如果没有此键,并没设置第二个参数会报错,设置了第二参数不会报错。有返回值

>>> dic.pop('book')
'python cookbook'
>>> dic.pop('book')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'book'
>>> dic.pop('book', '没有此书')
'没有此书'

popitem:python3.5之前以及3.5会随机删除一个键值对,而3.6过后及3.6会删除最后一个键值对。返回所删除的键值对(元组)。

>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic.popitem()
(3, 'c')

clear:清空字典

>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic.clear()
>>> dic
{}

del:删除指定的key的键值对,或者在内存中把该字典删除

>>> dic = {1:'a', 2:'b', 3:'c'}
>>> del dic[1]
>>> dic
{2: 'b', 3: 'c'}
>>> del dic
>>> dic
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dic' is not defined

通过 dic[key]=value 来改该键所对应的值

# 已存在的key则改,不存在的则添加
>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic['d'] = 4
>>> dic
{1: 'a', 2: 'b', 3: 'c', 'd': 4}
>>> dic[1] = 100
>>> dic
{1: 100, 2: 'b', 3: 'c', 'd': 4}

update(),参数为字典或"键值对"(键不带引号的)

>>> dic.update({'d':4, 'e':5})
>>> dic
{1: 'a', 2: 'b', 3: 'c', 'd': 4, 'e': 5}
>>> dic.update(aa=8)
>>> dic
{1: 'a', 2: 'b', 3: 'c', 'd': 4, 'e': 5, 'aa': 8}

通过键来查询:

dic[key],有此key则返回相应的值,无此key则报错。
>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 4
>>> dic[2]
'b'
get(key[, default]):default=None,1、如果设置了 则在没有此key时会返回,没设置则返回None。2、有此key会返回对应的值,而不会返回default设置的值。
>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic.get(4, '没有此key')
'没有此key'
>>> dic.get(4)
>>> dic.get(4) == None
True
>>> dic.get(1, '...')
'a'

通过dic的keys(), values(), items()来查询:返回的结果是类似于列表的元素。都可被list。

keys()
>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic.keys()
dict_keys([1, 2, 3])
values()
>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic.values()
dict_values(['a', 'b', 'c'])
items()
>>> dic = {1:'a', 2:'b', 3:'c'}
>>> dic.items()
dict_items([(1, 'a'), (2, 'b'), (3, 'c')])

猜你喜欢

转载自www.cnblogs.com/lanhoo/p/9508196.html