python - 比较字符串列表以查找序列的缺失值

标签 python list comparison

我有一个一周中可能包含假期的日期列表,例如独立日,而不是日期名称星期五。 (进行天气数据解析)寻找一种方法将我的列表与一周中的几天列表进行比较并找到丢失的一个(或多个)。我想出了以下方法,只要不是连续两个,它就可以很好地满足我的目的,但我真的很想找到一种更好的方法,使其更加可靠,并能够在以后重新调整它的用途。可能有一个标准库方法吗?

daysOfTheWeek = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]

days = ["NOTADAY", "saturday", "NOTADAY", "monday"]

repaired = []
for i, day in enumerate(days):
    try:
        dayIndex = daysOfTheWeek.index(day.lower())
    except ValueError:
        try:
            next = indices[i+1]
            dayIndex = next-1
        except IndexError:
            dayIndex = 6
    if dayIndex > 6:
        dayIndex = 0
    repaired.append(daysOfTheWeek[dayIndex])      

for r in repaired:
    print r.capitalize()

最佳答案

假设您要在 days 中找到至少一个包含在 daysOfTheWeek 的循环模式中的字符串,以便

days = ["NOTADAY", "sunday", "NOTADAY", "NOTADAY", "NOTADAY", "NOTADAY"]

变成:

['Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday']

这有效:

if any(day in daysOfTheWeek for day in days):
    for i, day in enumerate(days):
        if day in daysOfTheWeek:
            j=daysOfTheWeek.index(day)
            repaired=[daysOfTheWeek[k % len(daysOfTheWeek)].capitalize() 
                                         for k in range(j-i, j+len(days)-i)]
            print days
            print repaired 
            break
else:
    print 'cannot be repaired'    

关于python - 比较字符串列表以查找序列的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540992/

相关文章:

python - 在 tkinter GUI 的另一侧制作按钮

linux - 比较2个目录并将差异复制到目录3

java - java_home 和 popen 之间的 java 版本不同

python - 带条目的 Tkinter 列表框

python - 在python中提取列表中的重复元素

list - OCaml 模式匹配任意多个列表元素

涉及运算符重载函数的 C++ 链接器错误

javascript - 是否有更紧凑的选项来检查变量是否等于 "this"或 "that"?

php - 误解 array_udiff 的行为

python - 如何在 xy 平面上生成距离 y0(a, b) 10 步的随机点 (x, y)?