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

例如:

我有一个像 "Mo-Fr" 这样的字符串
我想得到一个列表:
[Monday, Tuesday, Wednesday, Thursday, Friday]
但我希望它也能这样工作:
string = "Fr-Mo"list = Friday, Saturday, Sunday, Monday
我的代码现在看起来像这样:

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:从2个已知项目之间的列表中获取项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33018528/

10-12 18:26