python - 对python中的元组列表进行排序

标签 python date datetime data-structures

我有这样的元组

[('AVAX', '070122'), ('AVAX', '201221'), ('AVAX', '211221'), ('AVAX', '241221'), ('AVAX', '311221'), ('BNB', '070122'), ('BNB', '201221'), ('BNB', '211221'), ('BNB', '241221'), ('BNB', '280122'), ('BNB', '311221'), ('BTC', '070122'), ('BTC', '201221'), ('BTC', '211221'), ('BTC', '241221'), ('BTC', '250222'), ('BTC', '250322'), ('BTC', '280122'), ('BTC', '311221'), ('ETH', '070122'), ('ETH', '201221'), ('ETH', '211221'), ('ETH', '241221'), ('ETH', '250222'), ('ETH', '250322'), ('ETH', '280122'), ('ETH', '311221'), ('MATIC', '070122'), ('MATIC', '201221'), ('MATIC', '211221'), ('MATIC', '241221'), ('MATIC', '311221'), ('SOL', '070122'), ('SOL', '201221'), ('SOL', '211221'), ('SOL', '241221'), ('SOL', '280122'), ('SOL', '311221')]

这些是硬币及其到期时间。日期是字符串格式,所以排列错误。

所以我已经更改了迄今为止的格式并尝试进行安排。 我已经尝试过以下代码。

filtered_final_product_list = [list(ele) for ele in filtered_final_product_list]
new_list=list()
for i in filtered_final_product_list:
    i[1]=datetime.strptime(i[1],'%d%m%y')
    new_list.append(i)
    
print(sorted(new_list))

结果按预期排序。

[['AVAX', datetime.datetime(2021, 12, 20, 0, 0)], ['AVAX', datetime.datetime(2021, 12, 21, 0, 0)], ['AVAX', datetime.datetime(2021, 12, 24, 0, 0)], ['AVAX', datetime.datetime(2021, 12, 31, 0, 0)], ['AVAX', datetime.datetime(2022, 1, 7, 0, 0)], ['BNB', datetime.datetime(2021, 12, 20, 0, 0)], ['BNB', datetime.datetime(2021, 12, 21, 0, 0)], ['BNB', datetime.datetime(2021, 12, 24, 0, 0)], ['BNB', datetime.datetime(2021, 12, 31, 0, 0)], ['BNB', datetime.datetime(2022, 1, 7, 0, 0)], ['BNB', datetime.datetime(2022, 1, 28, 0, 0)], ['BTC', datetime.datetime(2021, 12, 20, 0, 0)], ['BTC', datetime.datetime(2021, 12, 21, 0, 0)], ['BTC', datetime.datetime(2021, 12, 24, 0, 0)], ['BTC', datetime.datetime(2021, 12, 31, 0, 0)], ['BTC', datetime.datetime(2022, 1, 7, 0, 0)], ['BTC', datetime.datetime(2022, 1, 28, 0, 0)], ['BTC', datetime.datetime(2022, 2, 25, 0, 0)], ['BTC', datetime.datetime(2022, 3, 25, 0, 0)], ['ETH', datetime.datetime(2021, 12, 20, 0, 0)], ['ETH', datetime.datetime(2021, 12, 21, 0, 0)], ['ETH', datetime.datetime(2021, 12, 24, 0, 0)], ['ETH', datetime.datetime(2021, 12, 31, 0, 0)], ['ETH', datetime.datetime(2022, 1, 7, 0, 0)], ['ETH', datetime.datetime(2022, 1, 28, 0, 0)], ['ETH', datetime.datetime(2022, 2, 25, 0, 0)], ['ETH', datetime.datetime(2022, 3, 25, 0, 0)], ['MATIC', datetime.datetime(2021, 12, 20, 0, 0)], ['MATIC', datetime.datetime(2021, 12, 21, 0, 0)], ['MATIC', datetime.datetime(2021, 12, 24, 0, 0)], ['MATIC', datetime.datetime(2021, 12, 31, 0, 0)], ['MATIC', datetime.datetime(2022, 1, 7, 0, 0)], ['SOL', datetime.datetime(2021, 12, 20, 0, 0)], ['SOL', datetime.datetime(2021, 12, 21, 0, 0)], ['SOL', datetime.datetime(2021, 12, 24, 0, 0)], ['SOL', datetime.datetime(2021, 12, 31, 0, 0)], ['SOL', datetime.datetime(2022, 1, 7, 0, 0)], ['SOL', datetime.datetime(2022, 1, 28, 0, 0)]]

现在,当我想恢复我在字符串中提到的旧格式时,它的顺序不同。 它进入未排序的方式。需要帮助在最后以字符串格式排序。

最佳答案

使用datetime.datetime按硬币和日期排序:

from datetime import datetime
sorted(lst, key=lambda x:(x[0], datetime.strptime(x[1], '%d%m%y')))

输出:

[('AVAX', '201221'), ('AVAX', '211221'), ('AVAX', '241221'), 
 ('AVAX', '311221'), ('AVAX', '070122'), ('BNB', '201221'), 
 ('BNB', '211221'), ('BNB', '241221'), ('BNB', '311221'), 
 ('BNB', '070122'), ('BNB', '280122'), ('BTC', '201221'),
 ('BTC', '211221'), ('BTC', '241221'), ('BTC', '311221'), 
 ('BTC', '070122'), ('BTC', '280122'), ('BTC', '250222'), 
 ('BTC', '250322'), ('ETH', '201221'), ('ETH', '211221'), 
 ('ETH', '241221'), ('ETH', '311221'), ('ETH', '070122'), 
 ('ETH', '280122'), ('ETH', '250222'), ('ETH', '250322'), 
 ('MATIC', '201221'), ('MATIC', '211221'), ('MATIC', '241221'), 
 ('MATIC', '311221'), ('MATIC', '070122'), ('SOL', '201221'),
 ('SOL', '211221'), ('SOL', '241221'), ('SOL', '311221'), 
 ('SOL', '070122'), ('SOL', '280122')]

关于python - 对python中的元组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70416586/

相关文章:

sql - 根据日期范围选择记录值

java - 无法从 HH :mm:ss. SSS'Z' 转换为 HH:MM 格式 Java

python - 使用 pandas 将数据框导出到 python 中的 csv 文件

javascript - 将 JS 循环行为与日期混淆

.net - OpenType 编程

mysql - DATE 在动态之间

php - strtotime PHP,显示日期/时间

python - :doy:sod format 年的 Pandas date_parser 函数

python - 从 datetime64[ns, UTC], Python 中提取年月日

python - pygame中面向对象的圆形按钮?