我读取每一行并得到数组结果:
arr = line.split("|"); // [1, 500, ABC]
然后我需要检查每行中每个值[1, 500, ABC]
是否有重复我使用了哪种数据结构?
所以,如果我得到了两个相同的行或者第一个参数相同的行,我应该跳过它:
[1, 500, ABC]
[1, 600, ABC] // Skip it
[2, 500, ABC]
[1, 500, ABC] // skip it
好,那么您想要读取一堆行,将它们按|
字符分割,并丢弃第一个字段与第一行的第一个字段相同的行。可以是:
line = next(file) # process first line
arr = line.split("|")
field0 = arr[0]
data = [arr[:]] # make sure to take a copy...
for line in file:
arr = line.split("|")
if arr[0] != field0:
data.append(arr[:]) # again append a copy
如果我没有正确理解问题,请纠正我。让我困惑的是,如果两条线是相同的,那么就意味着第一个元素是相同的。这意味着您只需要检查第一个元素是否与之前相同/观察到的较弱条件?
seen_elements = set()
filtered_lines = []
for line in lines:
arr = line.split("|")
if arr[0] in seen_elements:
pass
else:
filtered_lines.append(line)
seen_elements.add(arr[0])
只是想补充一下,如果以后你想快速识别与第一个数字相关的元素,你也可以使用dict.setdefault
:
seen_items = dict()
for line in lines:
arr = line.split('|')
seen_items.setdefault(arr[0], arr[1:])