我有一个数组,其中列表的每一行都采用以下格式 要素1[tab]要素2[tab]要素3[tab]要素4[eol]
每行的前3个元素在列表中可以有多个实例,如:
11333[tab]55555[tab]EG[tab]455565[EOL]
11332[tab]55555[tab]EG[tab]455563[EOL]
11333[tab]55555[tab]EG[tab]455562[EOL]
每行的最后一个元素是可变的。我要做的是删除列表中的重复数据,并获取重复数据行的最后一个元素,然后用一个字符将它们连接在一起,如: 11333[tab]55555[tab]EG[tab]455565455562[EOL] 11332[tab]55555[tab]EG[tab]455565[EOL]
为了实现这一点,我必须在两个列表之间进行迭代,如下所示:
new_list = []
last_column = ""
for element in list1:
for otherelement in list 2:
if last_column == "" :
last_column += otherelement[3]
else:
last_column += "," + otherelement[3]
new_list.append(element.split(" ")[0:2] + " " + last_column)
不是一字不差,但它让你知道我在做什么。 现在请记住,这些列表中的每一个通常都至少可以有10000行,这意味着对于第一个列表中的每一个项目,都会对照另一个列表中的所有10000个项目进行检查。不理想,当然也不快。你知道吗
有没有一个更好的解决方案我没有想到?你知道吗
用你的实际数据展开上一个答案:
为了收集和分组数据,^{} 似乎是一个很好的选择。请参见下面的示例。你知道吗
将数据转换成本例中使用的表单应该很容易,而获得所需的输出应该正好相反。你知道吗
谢谢大家!使用defaultdict的解决方案要快得多。我从来没有正式计时,但我的解决方案运行了6秒,现在我看大约一秒,也许更少。当要附加的变量项的数量变大时(显然),这显示出显著的改进。你知道吗
我想,唯一的缺点就是因为字典不完美而失去秩序。但秩序对我来说并不重要。你知道吗
相关问题 更多 >
编程相关推荐