首页 > 编程笔记 > Python笔记 阅读:10

Python dict字典的定义和使用(新手必看)

Python 中的字典(dict)是一组通过关键字进行索引的、不重复的、可变的数据集合,可以简单地理解为由若干组键值(key/value)对组成的集合。

字典的创建方式很简单,通过花括号来创建,成员(键值对)之间用逗号隔开,键与值之间用冒号隔开。例如:
dev_info = {'ip': '192.168.1.1', 'name': 'as01', 'ports_sum': 48}
在字典 dev_info 中,键有 'ip'、'name'、'ports_sum',它们各自对应的值是 '192.168.1.1'、'as01'、'48':

为了提高代码可读性,在定义字典变量时可以适当留白,例如等号的前后添加一个空格,冒号后面添加一个空格。当字典的成员(键值对)较多时,可以适当换行并将 key 对齐,有换行的字典定义如下所示:
dev_info = {'ip': '192.168.1.1',
            'name': 'as01',
            'manufacture': 'huawei',
            'series': 'ce6800',
            'ports_sum': 48}

Python字典成员的访问

字典成员的访问与列表成员的访问相似,都是通过方括号,在方括号中指定 key,即可访问对应的 value。

例如:
dev_info = {'ip': '192.168.1.1', 'name': 'as01', 'manufacture': 'huawei', 'series': 'ce6800', 'ports_sum': 48}
dev_ip = dev_info['ip']
print(dev_ip)  # 输出结果是'192.168.1.1'
使用方括号进行成员访问时,如果字典中无对应 key,那么程序会报错。

Python 还提供了一种安全的字典访问方法,就是使用字典对象的 get() 方法,该方法的逻辑是:若有对应的键值对,则返回其值;否则,返回一个默认值。若未指定默认值,则返回特殊的空值 None。该方法不会引发解释器抛出异常,因此更为优雅。

例如,通过 get() 方法访问字典成员:
dev_info = {'ip': '192.168.1.1', 'name': 'as01', 'manufacture': 'huawei', 'series': 'ce6800', 'ports_sum': 48}
# 存在对应的键值对
dev_ip = dev_info.get('ip')
print(dev_ip)  # 输出结果是'192.168.1.1'
# 不存在对应的键值对,返回指定默认值
ssh_port = dev_info.get('ssh_port', 22)
print(ssh_port)  # 输出结果是指定的默认值22
 
# 不存在对应的键值对,未指定默认值,返回None
username = dev_info.get('username')
print(username)  # 输出结果是默认值,Python中的特殊对象None

Python字典的成员修改与添加

可以修改、添加字典的键值对,这都是通过指定 key 并赋值来完成的。它遵循如下逻辑:
字典成员的修改与添加方法如下所示:
dev_info = {'ip': '192.168.1.1', 'name': 'as01', 'manufacture': 'huawei', 'series': 'ce6800', 'ports_sum': 48}
dev_info['name'] = 'as02' # name存在,更新其值
dev_info['ssh_port'] = 22 # ssh_port不存在,创建新的键值对
print(dev_info)
# 输出结果是{'ip': '192.168.1.1', 'name': 'as02',
#           'manufacture': 'huawei', 'series': 'ce6800',
#           'ports_sum': 48, 'ssh_port': 22}

总结

字典是 Python 最常用的数据类型之一,可以用于承载运维中的很多数据,且因为有对应属性名称(key),其可读性更好。

一台网络设备可以被定义为字典类型的变量,key 是其属性,例如 IP 地址、设备名等;value 是对应属性的值。通过结合使用字典和列表,可以定义一个字典的列表,其成员是字典类型,例如端口设定为一个字典,有丰富的字段信息,多个端口字典组合成一个端口列表。

相关文章