为什么我的sort_array不是排序?

时间:2016-08-29 22:13:43

标签: arrays ruby sorting

我有一个名为tasks的数组,其内容如下所示。

[[#<Task id: 1, date: "2016-08-23", members: 5>, #<Task id: 2, date: "2016-08-20", members: 4> #<Task id: 3, date: "2016-08-24", members: 6>]]

目前,当我打印这些内容时,它会以上面显示的格式正确打印。

我的目标是按日期对数组进行排序。

sortedTasks = tasks.sort_by do |task|
  task.first[:date]
end

p sortedTasks

不幸的是,这打印出完全相同的数组,没有任何变化。

我想也许日期有问题,并尝试使用to_date,但这不是问题。

为了测试,我决定使用常规整数,所以我使用了下面的

sortedTasks = tasks.sort_by do |task|
  task.first[:members]
end

p sortedTasks

同样的事情,没有变化。

令人困惑的部分是没有错误消息,它只是打印sortedTasks,好像它是原始的tasks数组而没有任何变化。

p task.class确认它是一个数组。

1 个答案:

答案 0 :(得分:2)

如果您的粘贴数组是正确的,那么您正在对包含一个元素的数组进行排序,这是另一个数组。因为它只是一个元素,所以它已经有序了。

我希望你的意思是

import requests
import json
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build

#Set up credentials object
auth_key_url = "<JSON CREDENTIALS FILE>"
file_contents = requests.get(auth_key_url).content
key_dict = json.loads(file_contents)
creds = ServiceAccountCredentials.from_json_keyfile_dict(key_dict, ['https://spreadsheets.google.com/feeds'])

#Now build the API object
discoveryUrl = "https://sheets.googleapis.com/$discovery/rest?version=v4"
gsheet = build('sheets', 'v4', discoveryServiceUrl=discoveryUrl, credentials=creds)

result = gsheet.spreadsheets().values().get(spreadsheetId="<A SHEET ID>", range="Sheet1!A1:ZZ").execute()