индексный номер к большому для python - PullRequest
1 голос
/ 26 января 2020

Привет всем, я пытаюсь сделать простой json с некоторыми данными, которые я извлекаю из типа API. Я хочу, чтобы "ключ" был одним из идентификаторов, однако я получаю следующую ошибку "не может вписать int в целое число размера индекса". Оглядываясь вокруг, я думаю, что это означает, что число, которое я пытаюсь связать, поскольку ключ больше, чем число, может быть ?? Так что я думал о некоторых возможных обходных путях для этого и задавался вопросом, знает ли кто-нибудь способ обойти это. Лучшее, что я могу придумать, - это создать словарь с уникальными ключами, указывающими на это число. Найдите приведенный ниже код, который должен быть готов к работе как есть.

import json
import requests
import csv

response = requests.get("https://esi.evetech.net/latest/markets/10000002/orders/?datasource=tranquility&order_type=all&page=1&type_id=34")

data = []
data.append({"duration","is_buy_order","issued","location_id","min_vloume","order_id","price","range","system_id","type_id","volume_remain","volume_total"})
with open("D:\\Code\\EveFinance\\orders.json","w") as jsonFile:
    for index in response.json():
        #print(index['order_id'])
        id = index['order_id']
        print(id)
        data[id]
        # data[id].append({
        #     'duration':index['duration'],
        #     'issued':index['issued'],
        #     'location_id':index['location_id'],
        #     'min_vloume':index['min_vloume'],
        #     'price':index['price'],
        #     'range':index['range'],
        #     'system_id':index['system_id'],
        #     'type_id':index['type_id'],
        #     'volume_remain':index['volume_remain'],
        #     'volume_total':index['volume_total']
        #   })


    print(data)

#file = open("D:\\Code\\EveFinance\\orders.json","w")
#jsonString = json.dumps(data)
#file.write(jsonString)

ERROR:
[Running] python -u "d:\Code\EveFinance\dataSort.py"
5586835679
Traceback (most recent call last):
  File "d:\Code\EveFinance\dataSort.py", line 14, in <module>
    data[id]
IndexError: cannot fit 'int' into an index-sized integer

[Done] exited with code=1 in 0.949 seconds

1 Ответ

1 голос
/ 26 января 2020

Ах. Я тестировал ваш код на Linux, и похоже, что int обрабатывается по-разному в зависимости от платформы - см .: python по-разному обрабатывает длинные целые значения на Windows и Unix. На моей установке sys.maxsize возвращает: 9223372036854775807. На вашей (Windows) я подозреваю, что это 536870912 ( источник ). Если я прав, вы должны изменить свой подход. Может быть, использовать словарь вместо списка. Или просто создайте свои строки CSV путем объединения. Есть много возможных способов. Возможно, ваш код будет работать с меньшими числами.

...