Python3 字典常见操作及方法 遍历技巧

一、字典的基础介绍

见基本数据类型的介绍

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() 函数对要遍历的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值