python_dict

字典 dict

dict 字典是一些 ‘键:值’ 对的集合。

  • 用键来索引

  • 字典是可变对象,值的类型不限,键类型是不可变类型

    键类型不能是列表、元组、集合、字典

创建字典

关键字创建字典

1
dict(a=3, b=33)
1
{'a': 3, 'b': 33}

zip()函数生成关键字参数创建

1
dict(zip(['a', 'b'], [3, 4]))
1
{'a': 3, 'b': 4}

fromkeys()函数创建

1
dict.fromkeys(['a', 'b'], [3, 4])
1
{'a': [3, 4], 'b': [3, 4]}
1
dict.fromkeys(['a', 'b'], 11)
1
{'a': 11, 'b': 11}
1
dict.fromkeys('a', [3, 4])
1
{'a': [3, 4]}

解析式创建字典

1
{k: v for k, v in [('a', 1), ('b', 2), ('c',3)]}
1
{'a': 1, 'b': 2, 'c': 3}
1
{k:v for k,v in zip(['a','b','c'],[1,2,3])}
1
{'a': 1, 'b': 2, 'c': 3}

索引

d[key] 字典索引返回对应的值

  • 如果key不存在则抛出KeyError异常
1
2
dt1 = dict(zip(['a', 'b', 'c'], [11, 22, 33]))
dt1
1
{'a': 11, 'b': 22, 'c': 33}
1
dt1['b']
1
22

键测试

  • key in d。测试指定键是否存在字典中
1
2
'c' in dt1
's' in dt1
1
2
True
False

字典的迭代:

d.keys()

  • 返回一个dict_keys对象,它是一个可迭代对象,迭代时返回键序列
1
2
3
4
5
# 返回迭代器
dt1.keys()

# 将迭代器转成列表
list(dt1.keys())
1
2
dict_keys(['a', 'b', 'c'])
['a', 'b', 'c']

d.values():

  • 返回一个dict_values对象,它是一个可迭代对象,迭代时返回值序列
1
2
3
dt1.values()

list(dt1.values())
1
2
dict_values([11, 22, 33])
[11, 22, 33]

d.items():

  • 返回一个dict_items对象,它是一个可迭代对象, 迭代时返回元组(键,值)的序列
1
2
3
4
5
dt1.items()

list(dt1.items())

[list(x) for x in list(dt1.items())]
1
2
3
dict_items([('a', 11), ('b', 22), ('c', 33)])
[('a', 11), ('b', 22), ('c', 33)]
[['a', 11], ['b', 22], ['c', 33]]

字典的操作

获取字典的内容

1
2
3
4
[x for x in dt1]
[x for x in dt1.keys()]
[x for x in dt1.values()]
[x for x in dt1.items()]
1
2
3
4
['a', 'b', 'c']
['a', 'b', 'c']
[11, 22, 33]
[('a', 11), ('b', 22), ('c', 33)]

字典的增删改

1
2
3
4
5
d1= dict(zip(['a', 'b', 'c'], [11, 22, 33]))
d1

d1['f']=100
d1
1
2
{'a': 11, 'b': 22, 'c': 33}
{'a': 11, 'b': 22, 'c': 33, 'f': 100}
1
2
3
d1= dict(zip(['a', 'b', 'c'], [11, 22, 33]))
d1.pop('a')
d1
1
2
11
{'b': 22, 'c': 33}
1
2
3
d1= dict(zip(['a', 'b', 'c'], [11, 22, 33]))
del d1['a']
d1
1
{'b': 22, 'c': 33}
1
2
3
4
5
d1= dict(zip(['a', 'b', 'c'], [11, 22, 33]))
d1

d1['a']=[12,34,5]
d1
1
2
{'a': 11, 'b': 22, 'c': 33}
{'a': [12, 34, 5], 'b': 22, 'c': 33}
1
len(d1)
1
3

合并字典

1
2
3
4
d1= dict(zip(['a', 'b', 'c'], [11, 22, 33]))
d2= dict(zip(['d', 'e', 'f'], [1, 2, 3]))
d1.update(d2)
d1
1
{'a': 11, 'b': 22, 'c': 33, 'd': 1, 'e': 2, 'f': 3}
1
2
3
4
d1= dict(zip(['a', 'b', 'c'], [11, 22, 33]))
d2= dict(zip(['c', 'd', 'e'], [1, 2, 3]))
d1.update(d2)
d1
1
{'a': 11, 'b': 22, 'c': 1, 'd': 2, 'e': 3}