Сохранение значений из списка и словаря - PullRequest
0 голосов
/ 16 июня 2020

У меня проблема с последними тремя строками моего кода. У меня есть отфильтрованный список из API Альпака (shortable_marginable_assets). Затем у меня есть существующий словарь тикеров (symbol_list), и я хочу сохранить только тикеры, которые есть как в отфильтрованном списке, так и в словаре.

    symbol_list = {
               'TSLA': 100,"NCLH": 100, "HTZ": 100,
               "UONE": 100, "MTL": 100, "NH": 100,
               "JFIN": 100, "CLDX": 100, "LMPX": 100,
               }

    for symbol in symbol_list:
        # Filter the assets which have passed all vola and price filters and are shortable based on Alpaca API
        final_universe = [a for a in shortable_marginable_assets if a.symbol == symbol]
        print(final_universe)

    final_universe_tickers = []

    for asset in final_universe:
        final_universe_tickers.append(asset["symbol"])

print (final_universe) дает следующий формат:

[Asset({   'class': 'us_equity',
    'easy_to_borrow': True,
    'exchange': 'NASDAQ',
    'id': '8ccae427-5dd0-45b3-b5fe-7ba5e422c766',
    'marginable': True,
    'name': 'Tesla, Inc. Common Stock',
    'shortable': True,
    'status': 'active',
    'symbol': 'TSLA',
    'tradable': True})]
[Asset({   'class': 'us_equity',
    'easy_to_borrow': True,
    'exchange': 'NYSE',
    'id': '81f61b55-adee-402e-87d4-7b49579e2338',
    'marginable': True,
    'name': 'Norwegian Cruise Line Holdings Ltd. Ordinary Shares',
    'shortable': True,
    'status': 'active',
    'symbol': 'NCLH',
    'tradable': True})]
[]
[]
etc.

Почему моя переменная final_universe_tickers пуста, когда я запускаю код?

Спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Спасибо. Теперь он говорит: TypeError: объект «Актив» не подлежит подписке

Это вывод консоли в Spyder IDE. Ниже приведен снимок экрана для типов переменных. enter image description here

final_universe_tickers = []

for symbol in symbol_list:
    # Filter the assets which have passed all vola and price filters and are shortable based on Alpaca API
    final_universe = [a for a in shortable_marginable_assets if a.symbol == symbol]
    print(final_universe)
    for asset in final_universe:
        final_universe_tickers.append(asset["symbol"])
[Asset({   'class': 'us_equity',
    'easy_to_borrow': True,
    'exchange': 'NASDAQ',
    'id': '8ccae427-5dd0-45b3-b5fe-7ba5e422c766',
    'marginable': True,
    'name': 'Tesla, Inc. Common Stock',
    'shortable': True,
    'status': 'active',
    'symbol': 'TSLA',
    'tradable': True})]
Traceback (most recent call last):

  File "<ipython-input-172-cbe6126e4f81>", line 8, in <module>
    final_universe_tickers.append(asset["symbol"])

TypeError: 'Asset' object is not subscriptable
0 голосов
/ 16 июня 2020

Вам следует переместить for asset in final_universe l oop в for symbol in symbol_list l oop, поскольку в настоящее время вы перебираете только last final_universe.

final_universe_tickers = []

for symbol in symbol_list:
    # Filter the assets which have passed all vola and price filters and are shortable based on Alpaca API
    final_universe = [a for a in shortable_marginable_assets if a.symbol == symbol]
    print(final_universe)
    for asset in final_universe:
        final_universe_tickers.append(asset["symbol"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...