我正在尝试按股票名称和最近交易(价格)对列表进行排序, 但是它的设置方式使我很难弄清楚如何将其从最小到最高或从最高到最小进行排序。
因此列表是通过以下方式设置的:
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词典……有什么帮助吗?
答案 0 :(得分:0)
看看sorted()函数。
它允许您指定一个函数作为关键参数来对可迭代对象进行排序。您可以在数组上调用sorted()并提供一个按每个元素的last_trade价格排序的键。
答案 1 :(得分:0)
您可以使用一个键函数,该函数返回您希望排序顺序基于的字典值:
thelist.sort(key=lambda d: d['last_trade']['price'])