为了账号安全,请及时绑定邮箱和手机立即绑定

比较有序列表中的值

比较有序列表中的值

手掌心 2023-08-08 16:34:40
我开始了一个项目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]我把它们从最小到最大组织起来
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

您可以使用chunkedmore-itertools 库将列表分成对,然后循环遍历这些对以查找每个键的最大日期,并将其存储在字典中( ,last_val在下面的代码中)。这可能是进一步处理最有用的形式。

如果您确实需要将其转换回交错形式,则可以将日期格式化回字符串,并使用chain标准库中的函数将这些对展平回可迭代(flattened在下面的代码中)或列表。

from datetime import datetime

from itertools import chain


from more_itertools import chunked


data = [

    '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] = date


print(last_val)


flattened = chain(*(

    (key, date.strftime('%m-%d-%Y'))

    for key, date in last_val.items()

))


print(list(flattened))


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信