内容:
1.定义
字典(Dict),是可变的无序集合,同时也是一种以键值对为基本元素的可以存储各种数据类型的集合,用大括号({ })表示字典的开始和结束,元素之间用逗号( , )分隔。
2.键值对
由键(Key)和值(Value)组成,中间用冒号( : )隔开,字典是属于一对一映射关系的数据类型
>>> dic={‘a‘:1, ‘b‘:‘hello‘, ‘c‘:‘中国‘}
>>> len(dic)
3
1.字典的基本方法
注意:
(1)字典内部结构由哈希表构成,通过唯一的键访问对应的值,所以字典对象没有提供排序功能,字典数据类型是无序的。
(2)字典的元素(Key)不能重复(重复的默认只认最后一个值)
2.示例(字典的增删查改、遍历)
(1)通过 setdefault(obj1,obj2) 增加元素(update()方法也是可以增加元素的)
>>> dit={‘a‘:3, ‘b‘:2}
>>> print(dit)
{‘a‘: 3, ‘b‘: 2}
>>> dit.setdefault(‘a‘) # 只传一个参数时,默认该参数为Key,元素存在时返回对应值,不存在是设置该值为None
3
>>> dit.setdefault(‘a‘,10) # 元素存在,返回值3
3
>>> print(dit)
{‘a‘: 3, ‘b‘: 2}
>>> dit.setdefault(‘c‘,10) # 元素不存在,增加该元素
10
>>> print(dit)
{‘a‘: 3, ‘b‘: 2, ‘c‘: 10}
(2)利用 del 函数、pop() 方法、popitem() 方法删除(三个方法若是对不存在的元素进行操作,都将报错)
>>> dit={‘a‘:1, ‘b‘:2, ‘c‘:3}
>>> del(dit[‘a‘]) # 使用del删除指定元素
>>> print(dit)
{‘b‘: 2, ‘c‘: 3}
>>> dit={‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4, ‘e‘:5, ‘f‘:6}
>>> del(dit[‘a‘])
>>> print(dit)
{‘b‘: 2, ‘c‘: 3, ‘d‘: 4, ‘e‘: 5, ‘f‘: 6}
>>> dit.pop(‘b‘) # 使用pop删除指定元素并返回改元素值
2
>>> print(dit)
{‘c‘: 3, ‘d‘: 4, ‘e‘: 5, ‘f‘: 6}
>>> dit.pop(‘c‘,4) # 参数 ‘值’ 可加可不加,但是 ‘键’ 一定要加
3
>>> print(dit)
{‘d‘: 4, ‘e‘: 5, ‘f‘: 6}
>>> dit.popitem() # 使用popitem随机删除一个元素,并返回该元素(元组)
(‘f‘, 6)
>>> del(dit) # 使用del删除整个字典
>>> print(dit)
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
print(dit)
NameError: name ‘dit‘ is not defined
>>>
(3)通过 Key 或者 get() 方法查找字典值
>>> dit={‘a‘:1, ‘b‘:2, ‘c‘:3}
>>> dit[‘b‘]
2
>>> dit[‘d‘]
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
dit[‘d‘]
KeyError: ‘d‘
>>> dit.get(‘b‘)
2
>>> dit.get(‘d‘)
>>>
>>> # 注意:区别在于用Key查找,若元素不存在,会报错,而用get()方法不会报错,而是显示空值
(4)通过赋值或者 update() 方法对字典进行修改(或增加)
>>> dit1={‘a‘:1, ‘b‘:2, ‘c‘:3}
>>> dit2={‘a‘:4, ‘c‘:10, ‘d‘:7}
>>> dit1.update(dit2) # 通过update()更新字典
>>> print(dit1)
{‘a‘: 4, ‘b‘: 2, ‘c‘: 10, ‘d‘: 7}
>>> dit1.update({‘e‘:9}) # 通过update()增加元素
>>> print(dit1)
{‘a‘: 4, ‘b‘: 2, ‘c‘: 10, ‘d‘: 7, ‘e‘: 9}
>>> dit1[‘e‘:16]
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
dit1[‘e‘:16]
TypeError: unhashable type: ‘slice‘
>>> dit[‘e‘]=16
>>> print(dit1)
{‘a‘: 4, ‘b‘: 2, ‘c‘: 10, ‘d‘: 7, ‘e‘: 9}
>>> dit1[‘f‘]=14 # 通过赋值增加元素或修改元素值
>>> print(dit1)
{‘a‘: 4, ‘b‘: 2, ‘c‘: 10, ‘d‘: 7, ‘e‘: 9, ‘f‘: 14}
>>>
(5)a.通过 item() 遍历字典所有键值对
>>> dit={‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4, ‘e‘:5, ‘f‘:6}
>>> for everyone in dit.items():
print(everyone)
(‘a‘, 1)
(‘b‘, 2)
(‘c‘, 3)
(‘d‘, 4)
(‘e‘, 5)
(‘f‘, 6)
b.通过 key() 方法遍历所有键(此处的key()是可以不加的,得到的结果一样)
>>> for key in dit.keys(): print(key) a b c d e f >>> for key in dit: print(key) a b c d e f
c.通过已获取的key 遍历所有值或者使用 values() 方法遍历字典值
>>> for keys in dit: print(dit[keys]) 1 2 3 4 5 6 >>> for value in dit.values(): print(value) 1 2 3 4 5 6
3.字典的其他操作
(1)in 成员操作
>>> dit={‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4, ‘e‘:5, ‘f‘:6}
>>> if ‘a‘ in dit:
print("a in dit")
(2)clear() 方法
>>> dit={‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4, ‘e‘:5, ‘f‘:6}
>>> dit.clear()
>>> print(dit)
{}
>>>
(3)copy() 方法
>>> dit1={‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4, ‘e‘:5, ‘f‘:6}
>>> dit2=dit1.copy()
>>> print(dit2)
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4, ‘e‘: 5, ‘f‘: 6}
>>> id(dit1)
2586168101264
>>> id(dit2)
2586169142800
>>> dit3=dit1 # 直接通过赋值和copy()方法是有区别的,copy()方法属于深度赋值,和原来的互不干扰
>>> id(dit3)
2586168101264
>>>
(4)fromkeys() 方法
>>> dit1={‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4, ‘e‘:5, ‘f‘:6}
>>> dit2=dit1.fromkeys([‘g‘,‘h‘,‘i‘])
>>> print(dit2)
{‘g‘: None, ‘h‘: None, ‘i‘: None}
>>> print(dit1)
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4, ‘e‘: 5, ‘f‘: 6}
>>> # 可以看出,fromkeys()方法得到的结果和原始的字典无关,都是根据提供的键生成一个新的字典
原文:https://www.cnblogs.com/tuooo/p/11514293.html