gpt4 book ai didi

Python:从两个已知项目之间的列表中获取项目

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

我正在寻找一种方法来从 python 列表中获取 2 个项目之间的所有项目。该算法必须遍历整个数组。

例如:

我有一个像 "Mo-Fr" 这样的字符串最后我想得到一个列表:

[周一、周二、周三、周四、周五]

但我希望它也能这样工作:

string = "Fr-Mo"

list = 周五、周六、周日、周一

我的代码看起来像这样:

string = 'Mo-Fr'
days_order = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']
days_dict = {'Mo' : 'Montag',
'Di' : 'Dienstag',
'Mi' : 'Mittwoch',
'Do' : 'Donnerstag',
'Fr' : 'Freitag',
'Sa' : 'Samstag',
'So' : 'Sonntag',}
days = string.split('-')
days = [days_order.index(day) for day in days]
days_list = [days_dict[day] for day in days_order if days_order.index(day) in range(days[0], days[1] + 1)]

因此,如果字符串看起来像“Mo-Fr”但我的代码当然不能与“Fr-Mo”一起工作。有什么想法可以让它以干净的方式工作吗?

谢谢!

最佳答案

一个简单的解决方案是将 days_order 列表加倍,以便它包含工作日的所有轮换:

>>> days_order = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'] * 2

然后像这样获取开始/结束索引:

>>> string = 'Fr-Mo'
>>> days = string.split('-')
>>> start = days_order.index(days[0])
>>> end = days_order.index(days[1], start + 1) + 1

最后像这样构建天数列表:

>>> [days_dict[day] for day in days_order[start:end]]
['Freitag', 'Samstag', 'Sonntag', 'Montag']

关于Python:从两个已知项目之间的列表中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018528/

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