用换行符将包含指定项前后两个项的列表切片?

2024-09-28 19:05:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本带整数键和列表值的字典。我希望能够遍历列表,如果找到与输入匹配的条目,我希望打印/存储指定项之前的两个条目、指定项和之后的两个条目,从而存储一个包含五个条目的新列表。我希望这是一个总结,这样如果比赛是在名单上的最后一个,它将得到名单上的最后三个和名单上的前两个。我想不通。你知道吗

strings = {1:['e','f','fsharp','g','gsharp','a','asharp','b','c','csharp','d','dsharp'],
       2:['a','asharp','b','c','csharp','d','dsharp','e','f','fsharp','g','gsharp'],
       3:['d','dsharp','e','f','fsharp','g','gsharp','a','asharp','b','c','csharp'],
       4:['g','gsharp','a','asharp','b','c','csharp','d','dsharp','e','f','fsharp'],
       5:['b','c','csharp','d','dsharp','e','f','fsharp','g','gsharp','a','asharp'],
       6:['e','f','fsharp','g','gsharp','a','asharp','b','c','csharp','d','dsharp']}

usr_note = input("Enter note: ")

surrounding_notes = strings[1][strings[1].index(usr_note)-2:strings[1].index(usr_note)+2]

Tags: 目的列表index字典usr条目整数csharp
1条回答
网友
1楼 · 发布于 2024-09-28 19:05:14

尝试:

def surroundings(st,i):
    if i<2:
        return st[i-2:] + st[:i+3]
    if i+2 >= len(st):
        return st[i-2:] + st[:i+3-len(st)]

    return st[i-2:i+3]

usr_note = 'f'
i = strings[1].index(usr_note)
surrounding_notes = surroundings(strings[1], i)
print surrounding_notes

usr_note = 'd'
i = strings[1].index(usr_note)
surrounding_notes = surroundings(strings[1], i)
print surrounding_notes

usr_note = 'c'
i = strings[1].index(usr_note)
surrounding_notes = surroundings(strings[1], i)
print surrounding_notes

相关问题 更多 >