Python:多维数组

问题描述 投票:0回答:1

这种格式是多维数组吗?

sales=[LastSale(date=datetime.datetime(2024, 3, 10, 21, 15, 53, tzinfo=datetime.timezone.utc), price='0.59'), LastSale(date=datetime.datetime(2024, 3, 9, 16, 39, 22, tzinfo=datetime.timezone.utc), price='1.3'), LastSale(date=datetime.datetime(2024, 3, 9, 4, 59, 27, tzinfo=datetime.timezone.utc), price='0.58'), LastSale(date=datetime.datetime(2024, 3, 8, 23, 59, 45, tzinfo=datetime.timezone.utc), price='1.3'), LastSale(date=datetime.datetime(2024, 3, 7, 15, 55, 57, tzinfo=datetime.timezone.utc), price='0.9'), LastSale(date=datetime.datetime(2024, 3, 6, 14, 56, 54, tzinfo=datetime.timezone.utc), price='0.8'), LastSale(date=datetime.datetime(2024, 3, 5, 16, 55, 41, tzinfo=datetime.timezone.utc), price='1.12'), LastSale(date=datetime.datetime(2024, 3, 4, 20, 49, 50, tzinfo=datetime.timezone.utc), price='1.49'), LastSale(date=datetime.datetime(2024, 3, 3, 22, 12, 26, tzinfo=datetime.timezone.utc), price='0.6'), LastSale(date=datetime.datetime(2024, 3, 2, 8, 1, 7, tzinfo=datetime.timezone.utc), price='0.54'), LastSale(date=datetime.datetime(2024, 2, 25, 10, 6, 26, tzinfo=datetime.timezone.utc), price='0.3')]

我的目标是循环浏览此列表并检查该商品在过去 30 天内是否至少售出 30 次。并计算最近 30 天的平均价格。

但我什至不知道如何访问这些数据。

这是我尝试过的:

test = int(last_sales["LastSale"][0].Date.timestamp())

结果是这样的:

TypeError: 'LastSales' object is not subscriptable

为了让事情更清楚:

基本上我拥有的只是一个名为“last_sales”的变量。我打印了这个变量,结果就是上面奇怪的列表。

如果这对某人有帮助,这就是我转换从 API 获得的 json 的方式:

class LastSale(BaseModel):
date: datetime
price: str

class LastSales(BaseModel):
sales: List[LastSale]

def last_sales(self, item_name: str, game: Games = Games.RUST) ->     LastSales:
    method = 'GET'
    params = {'gameId': game.value, 'title': item_name}
    url_path = '/trade-aggregator/v1/last-sales'
    headers = self.generate_headers(method, url_path, params)
    url = API_URL_TRADING + url_path
    response = self.api_call(url=url, method=method, params=params,                          headers=headers)
    return LastSales(**response)
python arrays multidimensional-array
1个回答
0
投票

关于多维性的问题:如果

LastSale
是一个类对象,那么这个 可能 是一种多维的。

考虑:

class LastSale():
    def __init__(self, date, price):
        self.date = date
        self.price = price
        
sales = [LastSale(date=datetime.datetime(2024, 3, 10, 21, 15, 53, tzinfo=datetime.timezone.utc), price='0.59'), LastSale(date=datetime.datetime(2024, 3, 9, 16, 39, 22, tzinfo=datetime.timezone.utc), price='1.3'), LastSale(date=datetime.datetime(2024, 3, 9, 4, 59, 27, tzinfo=datetime.timezone.utc), price='0.58'), LastSale(date=datetime.datetime(2024, 3, 8, 23, 59, 45, tzinfo=datetime.timezone.utc), price='1.3'), LastSale(date=datetime.datetime(2024, 3, 7, 15, 55, 57, tzinfo=datetime.timezone.utc), price='0.9'), LastSale(date=datetime.datetime(2024, 3, 6, 14, 56, 54, tzinfo=datetime.timezone.utc), price='0.8'), LastSale(date=datetime.datetime(2024, 3, 5, 16, 55, 41, tzinfo=datetime.timezone.utc), price='1.12'), LastSale(date=datetime.datetime(2024, 3, 4, 20, 49, 50, tzinfo=datetime.timezone.utc), price='1.49'), LastSale(date=datetime.datetime(2024, 3, 3, 22, 12, 26, tzinfo=datetime.timezone.utc), price='0.6'), LastSale(date=datetime.datetime(2024, 3, 2, 8, 1, 7, tzinfo=datetime.timezone.utc), price='0.54'), LastSale(date=datetime.datetime(2024, 2, 25, 10, 6, 26, tzinfo=datetime.timezone.utc), price='0.3')]

print([[sale.date.strftime('%Y-%m-%d'), sale.price] for sale in sales])

[['2024-03-10', '0.59'], ['2024-03-09', '1.3'], ['2024-03-09', '0.58'], ['2024-03-08', '1.3'], ['2024-03-07', '0.9'], ['2024-03-06', '0.8'], ['2024-03-05', '1.12'], ['2024-03-04', '1.49'], ['2024-03-03', '0.6'], ['2024-03-02', '0.54'], ['2024-02-25', '0.3']]

您可以看到

LastSale
列表中的每个
sales
对象都包含属性
date
price
。人们可以迭代
sales
列表(它不是多维的,因为它是
LastSale
对象的一维列表)并将这两个属性引入到它们自己的列表中,从而使
print
命令的输出成为多维列表.

© www.soinside.com 2019 - 2024. All rights reserved.