猿问

比较有序列表中的值

我开始了一个项目BeautifulSoup,需要比较有序列表中的值。请参阅下面的示例:

list = [xxx, 09-11-2020, xxx, 09-13-2020,xxx, 09-09-2020, hhh, 09-10-2020, hhh, 09-11-2020, hhh , 09-15-2020, yyyy, 09-14-20-20,yyyy, 09-15-2020]

我需要一个包含值的新列表:

[xxx, 09-13-2020, hhh, 09-15-2020, yyy, 09-15-2020]

我把它们从最小到最大组织起来


手掌心
浏览 103回答 1
1回答

炎炎设计

您可以使用chunkedmore-itertools 库将列表分成对,然后循环遍历这些对以查找每个键的最大日期,并将其存储在字典中( ,last_val在下面的代码中)。这可能是进一步处理最有用的形式。如果您确实需要将其转换回交错形式,则可以将日期格式化回字符串,并使用chain标准库中的函数将这些对展平回可迭代(flattened在下面的代码中)或列表。from datetime import datetimefrom itertools import chainfrom more_itertools import chunkeddata = [    'xxx', '09-11-2020', 'xxx', '09-13-2020', 'xxx', '09-09-2020', 'hhh',    '09-10-2020', 'hhh', '09-11-2020', 'hhh', '09-15-2020', 'yyyy',    '09-14-2020', 'yyyy', '09-15-2020',]last_val = {}for key, date_str in chunked(data, 2):    date = datetime.strptime(date_str, '%m-%d-%Y').date()    if key not in last_val or date > last_val[key]:        last_val[key] = dateprint(last_val)flattened = chain(*(    (key, date.strftime('%m-%d-%Y'))    for key, date in last_val.items()))print(list(flattened))
随时随地看视频慕课网APP

相关分类

Python
我要回答