根据另一个列表的字符串值对一个元组列表进行排序

时间:2019-05-28 15:05:32

标签: python sorting tuples

我正在尝试根据另一个基于财务行情清单的列表对财务数据列表进行排序。

我拥有的两个列表是元组列表,其中包含有关公司财务数据的信息。 prc_list是具有元素形式为(company_ticker, price_dataframe)的元组列表,而fin_list是具有元素形式为(company_ticker, financial_dataframe, value)的元组列表。在这里,“价格”仅指开盘/收盘价,“财务”指进行基本分析时通常会看到的信息(例如ROE,ROA等)

我正在做的是首先我拿fin_list并根据特定的四分之一和键以降序对其进行排序。例如,如果我想按2013-Q3的ROE对所有公司进行排序,则第一家公司将显示2013年第三季度ROE值最高的公司的相关信息。

完成此操作后,我想对prc_list进行排序,以使代码的顺序与fin_list的顺序相匹配。

我的尝试如下:

prc_list = sorted(prc_list, key=(lambda x: fin_list[x][0]))
# Error -> "List indices must be integers or slices, not tuples."

tic_list = [fin_list[i][0] for i in range(len(fin_list))]
prc_list = sorted(prc_list, key=tic_list)
# Same error.

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

那呢?

fin_list = [("ticker 1" , "price 1", 10),
            ("ticker 2" , "price 2", 0),
            ("ticker 3" , "price 3", 20),
            ("ticker 4" , "price 4", 14)]

# sort this list
fin_list_sorted = sorted(fin_list, key=lambda x: x[2])
print(fin_list_sorted)

# if you want to sort it in decreasing order
fin_list_sorted = sorted(fin_list, key=lambda x: -x[2])
print(fin_list_sorted)

# if you only want the attributes company_ticker and price_dataframe
prc_list = list(map(lambda x: x[0:2], fin_list_sorted))
print(prc_list)