这篇文章主要记载自己学习python中的字典 dict的过程
字典的特点: 可变,无序,key不重复
字典dict定义 初始化
- d = dict() 或者 d = {}
- dict(**kwargs) 使用name=value对初始化一个字典
>>> dic1 = dict(a=1,b=2,c=[1,2,3])
>>> dic1
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
- **** d = {‘a’:10, ‘b’:20, ‘c’:None, ‘d’:[1,2,3]} : 常用方法
- dict(mapping,**kwarg) 使用一个字典构建另一个字典
>>> dic2 = dict(dic1)
>>> dic2
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
- 类方法dict.fromkeys(iterable, value)
>>> d = dict.fromkeys(range(5))
>>> d
{0: None, 1: None, 2: None, 3: None, 4: None}
>>> d = dict.fromkeys(range(5),'a')
>>> d
{0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a'}
字典元素的访问
-
d[key]:
1.返回key对应的值value
2.key不存在抛出KeyError异常 -
get(key[, default]):
1.返回key对应的值value
2.key不存在返回缺省值,如果没有设置缺省值就返回None -
setdefault(key[, default]):
1.返回key对应的值value
2.key不存在,添加kv对,value为default,并返回default,如果default没有设置,缺省为None
>>> d.setdefault(5)
>>> d
{0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: None}
>>> f = d.setdefault(6,'qdw')
>>> f
'qdw'
>>> d
{0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: None, 6: 'qdw'}
字典增加和修改
-
d[key] = value:
1.将key对应的值修改为value
2.key不存在添加新的kv对 -
update([other]) -> None:
1.使用另一个字典的kv对更新本字典
2.key不存在,就添加
3.key存在,覆盖已经存在的key对应的值
4.就地修改
字典删除
-
pop(key[, default]):
1.key存在,移除它,并返回它的value
2.key不存在,返回给定的default
3.default未设置,key不存在则抛出KeyError异常 -
popitem():
1.移除并返回一个任意的键值对
2.字典为empty,抛出KeyError异常 -
clear():清空字典
字典删除
- del语句:del 看着像删除了一个对象,本质上减少了一个对象的引用,del 实际上删除的是名称,而不是对象
字典遍历
- for … in dict
>>> d = {0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: None, 6: 'qdw'}
1.遍历key:
>>> for k in d:
print(k)
0
1
2
3
4
5
6
for k in d.keys():
print(k)
2.遍历value:
(1)for k in d:
print(d[k])
(2)for k in d.keys():
print(d.get(k))
(3)for v in d.values():
print(v)
a
a
a
a
a
None
qdw
3.遍历item,即kv对:
(1)for item in d.items():
print(item)
(0, 'a')
(1, 'a')
(2, 'a')
(3, 'a')
(4, 'a')
(5, None)
(6, 'qdw')
(2)for item in d.items():
print(item[0], item[1])
(3)for k,v in d.items():
print(k, v)
0 a
1 a
2 a
3 a
4 a
5 None
6 qdw
(4)for k, _ in d.items():
print(k)
(5)for _ ,v in d.items():
print(v)
defaultdict
- collections.defaultdict([default_factory[, …]]):
第一个参数是default_factory,缺省是None,它提供一个初始化函数。当key不存在的时候,会调用这个工厂函数来生成key对应的value
>>> d2 = defaultdict(list)
>>> for k in 'mnopq':
for v in range(3):
d2[k].append(v)
>>> print(d2)
defaultdict(<class 'list'>, {'m': [0, 1, 2], 'n': [0, 1, 2], 'o': [0, 1, 2], 'p': [0, 1, 2], 'q': [0, 1, 2]})
OrderedDict
- collections.OrderedDict([items]):
key并不是按照加入的顺序排列,可以使用OrderedDict记录顺序