python
中存在一种叫做字典的数据类型,字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值
key:value
对用冒号 :
分割,每个键值对之间用逗号 ,
分割,整个字典包括在花括号
{}
中,
格式如下所示: 1 d = {key1 : value1, key2 : value2 }
关联数组的定义
在shell
中称为关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。关联数组使用
declare
命令来声明,语法格式如下:
-A
选项就是用于声明一个关联数组。关联数组的键是唯一的。以下实例我们创建一个关联数组
site
,并创建不同的键值: 实例 1 declare -A site=(["google" ]="www.google.com" ["runoob" ]="www.runoob.com" ["taobao" ]="www.taobao.com" )
我们也可以先声明一个关联数组,然后再设置键和值: 实例 1 2 3 4 declare -A sitesite["google" ]="www.google.com" site["runoob" ]="www.runoob.com" site["taobao" ]="www.taobao.com"
关联数组的访问
访问关联数组元素可以使用指定的键,格式如下: 实例 1 2 3 4 5 6 declare -A sitesite["google" ]="www.google.com" site["runoob" ]="www.runoob.com" site["taobao" ]="www.taobao.com" echo ${site["runoob"]}
执行脚本,输出结果为: result
对于一些不确定的大量数组,我们可以直接使用默认的编号
方式赋值或取出结果,然后可以用循环来处理每一条记录。但是对于某些数量有限,且有一些特意义的情况使用关联数组可以大大提高程序的可读性。例如,我们需要在系统中检测一下是否存在命令unar
,
如果不存在则安装程序,但是程序的名称却是unarchiver
,
因此可以定义一个关联数组解决: 实例 1 2 3 declare -A cmdcmd["unar" ]="unarchiver" sudo pacman -S ${cmd["unar"]}
在不同的系统中存在不同的软件包管理器,此时可以通过定义关系数组来实现统一的管理脚本程序。
关联数组的特殊值
关联数组的特殊值 1 2 3 4 5 6 7 8 declare -A sitesite["google" ]="www.google.com" site["runoob" ]="www.runoob.com" site["taobao" ]="www.taobao.com" echo ${#site[*]} echo ${!site[*]} echo ${site[*]}
注意:上述echo
中的*
可以替换成@
,效果等价。