Python - доступ к словарю внутри словаря внутри списка - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь отсортировать список акций по их названию и последней сделке (цене), но из-за того, как они настроены, мне сложно понять, как отсортировать их от наименьшего к наибольшему или от наибольшего к наименьшему.

, поэтому список настраивается следующим образом:

thelist = [list {dictionay1 {dictonary2}}]

словарь внутри списка:

{'symbol_id': 'APPL', 'time_exchange': '2018-10-24T22:44:36.5280358Z', 'ask_price': 610.67, 'bid_price': 610.45, 'last_trade': {'time_exchange': '2018-10-24T21:38:13.0000000Z', 'price': 608.99938084, 'size': 651.39819405, 'taker_side': 'BUY'}}

список содержит не менее 400 из этих словарей.

, поэтому я выбираю цикл следующим образом:

stocks = ['APPL']

for item in thelist:
   name = item["symbol_id"]
   if name in stocks:
     price = round(item['last_trade']['price'], 2)
     print(name, price)

, который печатает акции с последней ценой сделки, но как мне это сделать?пойти сортировать что-то подобное?

Я пробовал сортировать с помощью itemgetter, но не могу получить доступ к словарю last_trade с этой ... любой помощью?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете использовать ключевую функцию, которая возвращает значение dict, на котором вы хотите, чтобы порядок сортировки основывался:

thelist.sort(key=lambda d: d['last_trade']['price'])
0 голосов
/ 25 октября 2018

Посмотрите на функцию sorted () .

Она позволяет вам указать функцию в качестве ключевого параметра для сортировки итерируемого объекта.Вы можете вызвать sorted () для вашего массива и предоставить ключ, который сортирует по цене last_trade каждого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...