我正在寻找一种方法来从 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/