一、字典的基础介绍
Python 的字典类似于Java 中的Map, 都属于key value的形式,也类似于同样的 Json结构或者JsonObject的使用。
键都是唯一的,但键对应的值没有限制。
字典使用 { }包围每一个键值对,每一个键值对之间使用 ’ , ’ 分割,键与值之间使用 :分割
例如:
>>> dicdict1 = {"key1":"value1", "hehe":"haha", "a":128, 154:"887"}
>>> dicdict1[154]
'887'
二、字典操作
创建空字典
dict1 = {}
获取字典键值对的数量
>>> dict1 = {"key1":"value1", "hehe":"haha", "a":128, 154:"887"}
>>> len(dict1)
4
获取指定键对应的值
(当指定的键不存在时直接报错)
>>> dict1 = {"key1":"value1", "hehe":"haha", "a":128, 154:"887"}
>>> dict1["key1"]
'value1'
>>> dict1[154]
'887'
更改字典键对应的值
>>> dict1 = {"key1":"value1", "hehe":"haha", "a":128, 154:"887"}
>>> dict1["key1"] = "value2"
>>> dict1["key1"]
'value2'
字典的删除操作
>>> dict1 = {"key1":"value1", "hehe":"haha", "a":128, 154:"887"}
>>> dict1["key1"] = "value2"
>>> dict1["key1"]
'value2'
>>> del dict1["key1"] # 删除某一个键值对
>>> print(dict1)
{'hehe': 'haha', 'a': 128, 154: '887'}
>>> dict1.clear() # 清空字典
>>> print(dict1)
{}
>>> del dict1; # 删除整个字典对象
>>> print(dict1) # 对象消失后整个变量失效
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict1' is not defined.
>>>
三、字典键值说明
字典的键要求不可变而且唯一,所以可以使用 数字,字符串,元组 不能使用 list,而值没有限制可以不唯一而且可以是任意类型,类似于 Java中的 Object。
当字典中一个键出现多次后,键只会保留一个,而最终的值将被最后一次该键的赋值覆盖,前面出现的每一次赋值都不会留下。
例如:
>>> dict1 = {"key1":"value1", "hehe":"haha", "a":128, 154:"887", "key1":"new one"}
>>> dict1["key1"]
'new one'
四、常见方法
len(dict)
计算字典元素个数,键值对个数或者键的个数
str(dict)
输出字典,可打印的字符串
type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型
假设这里的字典对象为 dict1
dict1.clear()
删除字典内所有元素
dict1.copy()
返回一个字典的浅复制
dict1.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict1.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值
key in dict1
如果键在字典dict里返回true,否则返回false
dict1.items()
以列表返回一个视图对象
dict1.keys()
返回一个视图对象
dict1.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict1.update(dict2)
把字典dict2的键/值对更新到dict里
dict1.values()
返回一个视图对象
pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem()
随机返回并删除字典中的最后一对键和值
五、遍历
items() 同时遍历出 key 和 value
>>> dc1 = {1:123, 22:"ddwa"}
>>> for k, v in dc1.items():
print(k ,v)
1 123
22 ddwa
在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到
>>> for x, y in enumerate(["22", "23", "24"]):
print(x, y)
0 22
1 23
2 24
同时遍历两个或更多的序列,可以使用 zip() 组合
>>> list1 = ['你是谁?', '什么事?','啊?']
>>> list2 = ['巴比', '芭比', '爸比']
>>> for v1, v2 in zip(list1, list2):
print('路人甲:{0} 路人乙:{1}'.format(v1, v2))
路人甲:你是谁? 路人乙:巴比
路人甲:什么事? 路人乙:芭比
路人甲:啊? 路人乙:爸比
反向遍历一个序列,使用reversed()
>>> for i in reversed(range(1, 9)):
print(i)
8
7
6
5
4
3
2
1
假设要按顺序遍历(数值大小或者英文字母排序) 与上面类似 可以使用 sorted() 函数对要遍历的使用