Python dict字典的定义和使用(新手必看)
Python 中的字典(dict)是一组通过关键字进行索引的、不重复的、可变的数据集合,可以简单地理解为由若干组键值(key/value)对组成的集合。
字典的创建方式很简单,通过花括号来创建,成员(键值对)之间用逗号隔开,键与值之间用冒号隔开。例如:
为了提高代码可读性,在定义字典变量时可以适当留白,例如等号的前后添加一个空格,冒号后面添加一个空格。当字典的成员(键值对)较多时,可以适当换行并将 key 对齐,有换行的字典定义如下所示:
例如:
Python 还提供了一种安全的字典访问方法,就是使用字典对象的 get() 方法,该方法的逻辑是:若有对应的键值对,则返回其值;否则,返回一个默认值。若未指定默认值,则返回特殊的空值 None。该方法不会引发解释器抛出异常,因此更为优雅。
例如,通过 get() 方法访问字典成员:
字典成员的修改与添加方法如下所示:
一台网络设备可以被定义为字典类型的变量,key 是其属性,例如 IP 地址、设备名等;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 必须是可以哈希的对象。对初学者而言,只有字符串和数字可以作为 key。在实际使用中,更多使用字符串作为 key。
- 字典中的 value 可以是任何 Python 的数据类型,包括基础的数据类型和复杂的数据对象。
为了提高代码可读性,在定义字典变量时可以适当留白,例如等号的前后添加一个空格,冒号后面添加一个空格。当字典的成员(键值对)较多时,可以适当换行并将 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 是对应属性的值。通过结合使用字典和列表,可以定义一个字典的列表,其成员是字典类型,例如端口设定为一个字典,有丰富的字段信息,多个端口字典组合成一个端口列表。