维护bash关联数组的插入顺序

时间:2017-09-05 12:10:55

标签: arrays bash sorting

我正在用Bash编写脚本。

我的关联数组存在问题,当我在数组中放入一条记录时:

# -*- coding: utf-8 -*-
import scrapy

class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['www. example.com']
start_urls = ['http://www.example.com/',
]

def parse(self, response):
    for article in response.css('.main-news'):
        yield {
        'title'     : article.css('.article-title h1::text').extract(),
        'time'      : article.css('.article-time time::text').extract(),
        'another'   : article.css('.article-source::text').extract(),
        'section'   : response.xpath('/html/body/div[3]/div/div/div[1]/ol/li[2]/a//text()').extract(),
        'article'   : article.css('.article-text p::text').extract() }


    for next_page in response.css('a::attr(href)'):
        yield response.follow(next_page, self.parse)

我将文本放在循环中的关联数组中(将文本排序):

declare -A arr_list_people_name

我读取数组的方式:

arr_list_people_name[$peopleId]+=$peopleName

与我记录的方式相比,我的列表顺序不同。但是,我希望找到与我在数组中记录它的方式相同的顺序(按值或键排序)。

你知道如何管理吗?

1 个答案:

答案 0 :(得分:1)

您需要使用第二个索引数组按照将其添加到arr_list_people_name的顺序存储密钥。

...
arr_list_people_name[$peopleId]+=$peopleName
arr_order+=("$peopleId")
...

for id in "${arr_order[@]}"; do
    echo "Key: $id"
    echo "Value: ${arr_list_people_name[$id]}"
done