这种格式是多维数组吗?
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)
关于多维性的问题:如果
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
命令的输出成为多维列表.