Python 如何检索已排序密钥/对集合的上一项?

Python 如何检索已排序密钥/对集合的上一项?,python,python-2.7,Python,Python 2.7,学习一门新语言最令人沮丧的事情之一是,你什么都不知道怎么做。我想完成一项简单的任务,但我正在努力实现它 我想跟踪我已经遍历过的项目,以及它们的位置。 当我找到一件物品时,我希望能够回过头来看看它是否已经被看到,如果已经被看到,它的位置(行号)是什么。然后我想查看在当前项目之前找到的最后一个项目,并查看它的名称和位置 我正在解析一些非结构化文本,有时我会匹配word部分的非预期部分 采取以下行动: 'Item 1', 150 'Item 2', 340 'Item 3', 794 'Item 4'

学习一门新语言最令人沮丧的事情之一是,你什么都不知道怎么做。我想完成一项简单的任务,但我正在努力实现它

我想跟踪我已经遍历过的项目,以及它们的位置。 当我找到一件物品时,我希望能够回过头来看看它是否已经被看到,如果已经被看到,它的位置(行号)是什么。然后我想查看在当前项目之前找到的最后一个项目,并查看它的名称和位置

我正在解析一些非结构化文本,有时我会匹配word部分的非预期部分

采取以下行动:

'Item 1', 150
'Item 2', 340
'Item 3', 794
'Item 4', 1205
'Item 5', 1869
'Item 2', 3412  <-- I've seen 2, So I want to inspect the item before it (5, 1869)
“项目1”,150
'项目2',340
“项目3”,794
“项目4”,1205年
“项目5”,1869年
“项目2”,3412=最后一行匹配+1:#尽量不要重新匹配
如果模式==上次匹配的模式和行数<(上次匹配的行数+2):继续
#将匹配信息存储在嵌套在更高级别列表中的本地元组中
如果blob.lower()中的“未”(续)和blob.lower()中的“未”(续):
打印“{0}-{1}”。格式(图案,行号)
'''
在这一点上,我想看看最后一次看到的,和
1) 获取与此项匹配的最后一个可见项(“项2”)
2) 将最后一项添加到最后一次查看中
3) 做一些计算
'''
最后一次看到的[pattern]=行数
dict中的if模式(第节项).keys():
测试=dict(章节项目)
现有线路=测试[模式]
打印{0}存在,行号为{1}。格式(模式,现有行)
节项追加((模式,行数))
#追踪最后一场比赛
最后一行匹配=行数
最后匹配的模式=模式
#对项匹配进行排序和规范化
fixed_list=OrderedDict(self.sorted_)(section_items,itemgetter(0))).items()

使用一个
dict
,边走边积累东西,检查你以前是否见过它

sequence = [('item 1',150),('item 2',340),('item 3',794),('item 4',1205,),('item 5',1869),('item 2',3412)]
d = {}

for i,tup in enumerate(sequence):
    item,val = tup
    if d.get(item):
        print("I've seen {} before, it was {} at index {}".format(item,*d.get(item)))
    d[item] = (val, i)

#I've seen item 2 before, it was 340 at index 1
d
将始终显示您最后一次看到的
,或


如果您需要跟踪过去看到
项的所有时间,请向上移动到
defaultdict
,为您将
(项,i)
元组累积到
列表中。

使用
dict
进行累积,检查您以前是否看到过它

sequence = [('item 1',150),('item 2',340),('item 3',794),('item 4',1205,),('item 5',1869),('item 2',3412)]
d = {}

for i,tup in enumerate(sequence):
    item,val = tup
    if d.get(item):
        print("I've seen {} before, it was {} at index {}".format(item,*d.get(item)))
    d[item] = (val, i)

#I've seen item 2 before, it was 340 at index 1
d
将始终显示您最后一次看到的
,或


如果您需要跟踪过去看到
项的所有时间,请向上移动到
defaultdict
,为您将
(项,i)
元组累积到
列表中。

使用
dict
进行累积,检查您以前是否看到过它

sequence = [('item 1',150),('item 2',340),('item 3',794),('item 4',1205,),('item 5',1869),('item 2',3412)]
d = {}

for i,tup in enumerate(sequence):
    item,val = tup
    if d.get(item):
        print("I've seen {} before, it was {} at index {}".format(item,*d.get(item)))
    d[item] = (val, i)

#I've seen item 2 before, it was 340 at index 1
d
将始终显示您最后一次看到的
,或


如果您需要跟踪过去看到
项的所有时间,请向上移动到
defaultdict
,为您将
(项,i)
元组累积到
列表中。

使用
dict
进行累积,检查您以前是否看到过它

sequence = [('item 1',150),('item 2',340),('item 3',794),('item 4',1205,),('item 5',1869),('item 2',3412)]
d = {}

for i,tup in enumerate(sequence):
    item,val = tup
    if d.get(item):
        print("I've seen {} before, it was {} at index {}".format(item,*d.get(item)))
    d[item] = (val, i)

#I've seen item 2 before, it was 340 at index 1
d
将始终显示您最后一次看到的
,或




如果您需要跟踪过去看到
项的所有时间,请向上移动到
defaultdict
,为您将
(项,i)
元组累积到
列表中。

如果看不到更多上下文,我们不可能帮助您。你能把你的代码贴在这里吗?谢谢谢谢你的提示。我不确定代码是否重要,因为我太不知道该怎么做了。如你所见,我没有取得多大进展。请修复你的代码缩进。这也是一个好主意。thnxWe不可能在看不到更多上下文的情况下帮助您。你能把你的代码贴在这里吗?谢谢谢谢你的提示。我不确定代码是否重要,因为我太不知道该怎么做了。如你所见,我没有取得多大进展。请修复你的代码缩进。这也是一个好主意。thnxWe不可能在看不到更多上下文的情况下帮助您。你能把你的代码贴在这里吗?谢谢谢谢你的提示。我不确定代码是否重要,因为我太不知道该怎么做了。如你所见,我没有取得多大进展。请修复你的代码缩进。这也是一个好主意。thnxWe不可能在看不到更多上下文的情况下帮助您。你能把你的代码贴在这里吗?谢谢谢谢你的提示。我不确定代码是否重要,因为我太不知道该怎么做了。如你所见,我没有取得多大进展。请修复你的代码缩进。这也是一个好主意。谢谢。我知道这很简单。我很沮丧,因为我知道我想做什么,我只是不知道如何用Python的方式来做。@Bitwise不正确。我将2元组放入
dict
,这不会发生。有没有办法也通过索引提取值?如果我想知道最后一件物品是什么呢?@Baywatch离开什么?
sequence
的第二个索引是
sequence[1]
。字典无法索引。明白了,但我可以执行类似于:d.items()[-1][0]和d.items()[-1][1]的操作来获取“最后添加的”值。我需要他们计算连接项目的潜在罚款。谢谢。我知道这很简单。我很沮丧,因为我知道我想做什么,我只是不知道如何用Python的方式来做。@Bitwise不正确。我把二元组放进去