def fn(tup):
number = tup[1]
divisors = {'B': 1, 'M': 1000}
if number[-1] in divisors:
return (tup[0], float(number[:-1]) / divisors[number[-1]])
else:
return tup
Проблема в том, что эта функция предназначалась для запуска строкового представления числа, но вы передавали ему кортеж.Так что просто потяните 1-й элемент кортежа.Затем верните кортеж, состоящий из 0-го элемента и преобразованного 1-го элемента, если 1-й элемент является трансформируемым, или просто верните кортеж.
Кроме того, я вставил туда еще условие, потому что считаю его более читабельным.Я не знаю, что является более эффективным.
для сортировки используйте sorted
с аргументом ключевого слова key
:
MC = sorted(map(fn, MC), key=lambda x: x[0])
для сортировки по тикеру или
MC = sorted(map(fn, MC), key=lambda x: x[1] )
для сортировки по цене.Просто передайте reversed=True
на reversed
, если хотите, чтобы он был от высокого к низкому:
MC = sorted(map(fn, MC), key=lambda x: x[1], reversed=True)
, вы можете найти другие полезные советы по сортировке здесь: http://wiki.python.org/moin/HowTo/Sorting/