python数据结构之字典(dict)——超详细
字典(dict)
1.什么是字典
字典是具有映射关系的一个集合,有自己的标志性符号,用{}来定义。字典由多个键以及其对应的键值共同构成的,字典是无序的,只讲究对应关系,并且字典中的键是独一无二的
1.创建一个字典
直接用{}来创建
empty = {}
empty
{}
type(empty)
dict
下面这种方式,键必须加引号,且键与值之间用 : (冒号)连接起来
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict1
{'a': 1, 'b': 2, 'c': 3}
使用dict()函数来创建
#
dict1 = dict((('a', 1), ('b', 2), ('c', 3)))
dict1
{'a': 1, 'b': 2, 'c': 3}
也可以这样来写,与值之间用 = (等号)连接起来的话,键的位置不能加上字符串的引号,否则会报错
dict1 = dict(a = 1, b = 2, c = 3)
dict1
{'a': 1, 'b': 2, 'c': 3}
dict1 = dict(zip(['a', 'b', 'c'], [1, 2, 3]))
dict1
{'a': 1, 'b': 2, 'c': 3}
2.修改键的值
dict1['a'] = 2
dict1['b'] = 1
dict1
{'a': 2, 'b': 1, 'c': 3}
3.字典的内置函数
1.fromkeys()函数
用于创建并返回一个新的字典,它有俩个参数:第一个参数是字典的键;第二个参数是传入键的值,如果不写,默认为None
dict1 = {}
dict1.fromkeys((1, 2, 3))
{1: None, 2: None, 3: None}
dict2 = {}
dict2.fromkeys((1, 2, 3), "Number")
{1: 'Number', 2: 'Number', 3: 'Number'}
dict3 = {}
dict3.fromkeys((1, 2, 3), ("noe", "two", "three"))
{1: ('noe', 'two', 'three'),
2: ('noe', 'two', 'three'),
3: ('noe', 'two', 'three')}
2.访问字典的方法:keys()、value()和items()
keys()用于返回字典中的键,values()用于返回字典中所有的值,items()返回字典中所有的键值对
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict1.keys()
dict_keys(['a', 'b', 'c'])
dict1.values()
dict_values([1, 2, 3])
dict1.items()
dict_items([('a', 1), ('b', 2), ('c', 3)])
3.get()函数
当键不存在时,get()方法并不会报错,只是默默的返回一个None,表示啥也没找到.
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict1.get('d')
如果希望找不到数据时,返回指定的值,可以在get()的第二个参数中设置对应的默认返回值
dict1.get("孙悟空","木有^_^")
'木有^_^'
也可以通过in 和 not in 来判断一个键是否在字典中
30 in dict1
False
'a' in dict1
True
4.clear()函数
清空一个字典
dict1.clear()
dict1
{}
使用clear()函数,可以使所有指向该字典的其他字典都清空
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict2 = dict1
dict1.clear()
dict1
{}
dict2
{}
5.copy()函数
用来复制字典
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict2 = dict1.copy()
id(dict1)
1799550839400
id(dict2)
1799550838896
dict1['a'] = 2
dict1
{'a': 2, 'b': 2, 'c': 3}
dict2
{'a': 1, 'b': 2, 'c': 3}
6.pop()和popitem()
pop()是给定键弹出的值,而popitem()是弹出一个键值对
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict1.pop('a')
1
dict1
{'b': 2, 'c': 3}
dict1.popitem()
('c', 3)
dict1
{'b': 2}
7.setdefault()与get()类似,但是setdefault()在字典中找不到对应的键时会自动添加
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict1.setdefault('d')
dict1
'a': 1, 'b': 2, 'c': 3, 'd': None}
8.update()
用来更新字典
dict1 = {'a' : 1, 'b' : 2, 'c' : 3}
dict1.update(a = 2)
dict1
{'a': 2, 'b': 2, 'c': 3}