下面有一个名为row_list
的嵌套列表:
[
[{
'text': 'Page 1, col 1.',
'top': Decimal('83.640')
}],
[{
'text': 'Page 1, col 2.',
'top': Decimal('112.920')
}],
[{
'text': 'Page 1, col 3',
'top': Decimal('127.560'),
}]
]
现在,我正在尝试迭代此列表列表。
但是,当我进行迭代时,我想将n
列表中的每个项目都带走,并在右侧“查找”-意味着我想在以下列表中签入(除非它是最后一个列表),即同一n
项目的值。
例如,对于列表的第一次迭代,如下所示:
[{
'text': 'Page 1, col 1.',
'top': Decimal('83.640')
}]
在这里,我要检查其他列表中其他top
项目的n
值。如果该最高值不相同(或在公差级别10之内),我想在同一n
位置-但在另一个列表中添加一个新项目。>
因此,按照上面的示例,83.640
的最高级别不在其他两个列表中的可接受范围内,因此我们应该为每个列表添加一个项目:
[
[{
'text': 'Page 1, col 1.',
'top': Decimal('83.640')
}],
[{
'text': '', #added item
'top': Decimal('83.640')
},{
'text': 'Page 1, col 2.',
'top': Decimal('112.920')
}],
[{
'text': '', #added item
'top': Decimal('83.640')
},{
'text': 'Page 1, col 3',
'top': Decimal('127.560'),
}]
]
我试图弄清楚如何从左到右而不是从上到下查看列表。这是我到目前为止的内容:
for col_no, col in enumerate(row_list):
#Don't compare the last list, as there are no more lists to compare to.
if col != row_list[-1]:
for line in col:
currentTopValue = line['top']
nextColValue = row_list[col_no + 1][0]['top']
if abs(currentTopValue - nextColValue) >= float(10):
row_list.insert(0, [{'text': '', 'top': currentTopValue}])
如您所见,以上内容是静态的(硬编码索引)。行列表在每个列表中可以包含许多项。
由于某种原因,当我执行代码时,它无法运行(似乎正在挂起-可能是瓶颈?)
有人可以引导我朝正确的方向前进吗?
答案 0 :(得分:0)
代替此if语句:
if col != row_list[-1]:
尝试明智地构建循环:
for col_no, col in enumerate(row_list[:-1]):
由于您在for循环中插入了row_list
个新元素,因此您的代码无法正常工作。
那里:
row_list.insert(0, [{'text': '', 'top': currentTopValue}])
创建temp_row_list = []
的好方法
并将这些数据插入其中。
它应该工作,请检查以下内容:
temp_row_list = []
for col_no, col in enumerate(row_list[:-1]):
for line in col:
currentTopValue = line['top']
nextColValue = row_list[col_no + 1][0]['top']
if abs(currentTopValue - nextColValue) >= float(10):
temp_row_list.append([{'text': '', 'top': currentTopValue}])
答案 1 :(得分:0)
因为我们要修改添加a.zipWith(b)((fromA, fromB) => fromA)
的子列表,所以我们想跟踪谁是原始元素;因为您将dict
属性设置为'top'
,所以我们可以在子列表中搜索包含某些文本的第一个元素。
''
然后我们可以按指定的公差循环遍历列表。我们可以使用当前子列表的计数器,并在def get_elem_for_sublist(sublist: list):
for elem in sublist: # dict
if elem['text'] != '':
return elem
return None
循环的末尾将其增加1。
通过枚举获取索引和子列表,我们可以检查while
,获取if counter_sublist == idx
,或者value_to_compare
和value
之间的当前差大于{{1 }}。
value_to_compare
输出为
tolerance