[英]Ordered associative arrays in bash
我可以在bash
执行以下操作:
declare -A data
data[A]="aaa"
data[C]="ccc"
data[B]="bbb"
for i in "${!data[@]}" ; do
printf "%-20s ---> %s\n" "$i" "${data[$i]}"
done
哪个输出:
A ---> aaa
B ---> bbb
C ---> ccc
就是说,关联数组被重新排序(我假设对键使用字典顺序,但是不确定),并且丢失了创建数据的原始顺序。 我想改为:
A ---> aaa
C ---> ccc
B ---> bbb
在python
我将使用OrderedDict
而不是简单的dict
。 bash有类似的概念吗?
正如已经回答的那样,关联数组不是有序的。 如果要在该阵列中订购,请使用以下解决方法。
declare -A data
data_indices=()
data[A]="aaa"; data_indices+=(A)
data[C]="ccc"; data_indices+=(C)
data[B]="bbb"; data_indices+=(B)
for i in "${data_indices[@]}" ; do
printf "%-20s ---> %s\n" "$i" "${data[$i]}"
done
Bash中没有定义关联数组的顺序。 因此,脚本输出的顺序将不可预测。 如果要在阵列中存储更多信息,建议创建另一个使用相同键的并行关联阵列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.