如何在Python3中使用datetime和lambda对列表进行合并和排序



我需要从两个独立的txt文件中获取信息,根据列表的第一个索引(日期(对它们进行合并和排序。我在一起使用Lambda和DateTime时遇到问题。我目前被困在这个问题上,对如何实现这个问题已经没有任何想法了。我也希望你能给我一个解释,让我明白我在哪里犯了错误。

  • 我认为我可能正在创建各种列表,然而,当我打印上一个列表的Len时,它说它包含与预期相同数量的项目。因此,我相信我没有错误地创建具有额外值的列表

注意:我的编程之旅已经进行了两个月,我已经寻找了不同的方法来解决我的问题,但我仍然没有找到。昨天,我在一个简单得多的问题上实现了同样的概念,第一个索引是个位数的INT,这要容易得多。由于Date是第一个索引,我很难理解代码中DateTime和lambda的语法。我感谢所有的帮助和意见!

from datetime import datetime
from typing import Any, List

def get_list1(file_name: str) -> Any:
list1 = []
with open(file_name, newline='') as inputFile:
lines = inputFile.readlines()
for line in lines:
line = line.replace("rn", '')
seperate = line.split(";")
list1.append(seperate)
return list1
def get_list2(file_name: str) -> Any:
list2 = []
with open(file_name, newline='') as inputFile:
lines = inputFile.readlines()
for line in lines:
line = line.replace("rn", '')
seperate = line.split(";")
list2.append(seperate)
return list2

def mergeLists(list1:List, list2:List):
newList = []
for item in list1:
newList.append(list1)
for item in list2:
newList.append(list2)
print(len(newList))
return(newList)

def sortedList(newList:List):
orderedList = sorted(newList, key=lambda x: datetime.datetime.strptime(x[0]))
print(orderedList)

list1 = get_list1("bitcoin.txt")
list2 = get_list2("exchange.txt")
newList =mergeLists(list1, list2)
sortedList(newList)
bitcoin.txt = 
2022-08-01;buy;100
2022-08-04;buy;50
2022-08-06;buy;10
exchange.txt = 
2022-08-02;buy;200
2022-08-03;sell;300
2022-08-05;sell;25

按日期排序的期望输出=[2022-08-01;购买;100,2022-08-02;购买200,2022-08-03;卖300,2022-08-04;购买50,2022-08-05;卖25,2022-08-06;购买10]

由于日期的格式是yyyy-mm-dd(可排序为字符串(,并且是每行的第一个文本,因此您可以对它们进行排序,而无需将它们转换为日期时间。这应该做到:

def file_to_list(file: str) -> list:
out = []
with open(file) as f:
for line in f:
out.append(line.strip())
return out
bitcoin  = file_to_list("bitcoin.txt")
exchange = file_to_list("exchange.txt")
combined = bitcoin + exchange
sorted(combined)

输出:

['2022-08-01;buy;100',
'2022-08-02;buy;200',
'2022-08-03;sell;300',
'2022-08-04;buy;50',
'2022-08-05;sell;25',
'2022-08-06;buy;10']

最新更新