gpt4 book ai didi

python - 根据完全和/或部分匹配对列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:02 28 4
gpt4 key购买 nike

我想返回一个排序列表,使用完整匹配或前缀匹配的列表。我可以演示一个仅适用于完全匹配的函数 sorted_schedule

# This is the defined order (CONSTANT)
WEEKDAY_ORDER = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

# This is my working function
def sorted_schedule(s):
return sorted(s, key=lambda k: WEEKDAY_ORDER.index(k))

# Given an unordered set, return a sorted list
schedule1 = set(['Wednesday', 'Friday'])
print(schedule1) # set(['Friday', 'Wednesday'])
print(sorted_schedule(schedule1)) # ['Wednesday', 'Friday']

但是,它不适用于前缀匹配,即开头是 weekday_order 中的匹配,但项目的其余部分不相关。

schedule2 = set(['Wednesday afternoon', 'Friday'])
print(sorted_schedule(schedule2))
# ValueError: 'Wednesday afternoon' is not in list

我猜测我需要为 key 提供不同的函数,但我不确定如何实现。

最佳答案

获取字符串的第一部分。 (星期三来自星期三下午)

>>> WEEKDAY_ORDER = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
>>>
>>> def sorted_schedule(s):
... return sorted(s, key=lambda k: WEEKDAY_ORDER.index(k.split()[0])) # <---
...
>>> schedule2 = set(['Wednesday afternoon', 'Friday'])
>>> print(sorted_schedule(schedule2))
['Wednesday afternoon', 'Friday']

关于python - 根据完全和/或部分匹配对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com