一、字典dict定义初始化
- 字典是key-value键值对的数据集合
- key的要求和set的元素要求一致,可hash才可以作为key
- 字典是可变的,无序的,key不可重复
- d = dict() 或者d = {} 定义一个空字典
- dict(**kwargs) 使用name=value对 初始化一个字典
二、字典元素的访问
- d[key]: 返回key对应的值value,key不存在抛出KeyError异常
- d.get(key[,default]): 返回key对应的值value,key不存在返回缺省值,如果没有缺省值返回None
- d.setdefault(key[,default]):返回key对应的值value,key不存在,添加kv对;value为default,并返回default,如果没有default,缺省为None
三、字典增加和修改
- d[key] = value: 将key对应的值修改为value,key不存在添加新的kv对
- d.update([other]): 使用另一个字典的kv对更新本字典,key不存在,就添加;存在就覆盖已经存在value
- d.update(red=1)
四、字典的删除
- d.pop(key):key存在就移除,并返回它的value值,不存在返回默认值,没有默认值就抛异常
- d.popitem(): 移除并返回一个任意的键值对,字典为空,抛出异常ValueError
- d.clear():清空字典
五、字典遍历
- 遍历key:for k in d或者for k in d.keys()
- 遍历value: for k in d: print(d[k])
- 遍历item,即kv对: for item in d.items()或for k,v in d.items()
- python3中,keys,values,items方法返回一个类似一个生成器的可迭代对象,不会把函数的返回结果复制到内存中
- 举例:
- {1: 'a', 2: 'b'}
>>> for k in d:
print(k)
1
2
>>> for k in d.keys():
print(k)
1
2
>>> for k in d:
print(d[k])
a
b
>>> for item in d.items():
print(item)
(1, 'a')
(2, 'b')
>>> for k,v in d.items():
print(k,v)
1 a
2 b
>>>
六、有序字典OrderedDict
- 有序字典可以记录元素插入的顺序,打印的时候也是按照这个顺序输出打印
- 举例:
- >>> from collections import OrderedDict
- >>> import random
- >>> d = {'banana':3,'apple':4,'pear':1,'orange':2}
- >>> print(d)
- {'pear': 1, 'apple': 4, 'orange': 2, 'banana': 3}
- >>> keys = list(d.keys())
- >>> keys
- ['pear', 'apple', 'orange', 'banana']
- >>> random.shuffle(keys)
- >>> print(keys)
- ['banana', 'orange', 'apple', 'pear']
- >>> od = OrderedDict()
- >>> for key in keys:
- od[key] = d[key]
- >>> print(od)
- OrderedDict([('banana', 3), ('orange', 2), ('apple', 4), ('pear', 1)])
- >>> print(od.keys())
- odict_keys(['banana', 'orange', 'apple', 'pear'])
- >>>