在python中比较并从列表中提取字符串
在上面的列表中,如果有两个连续的在python中比较并从列表中提取字符串,python,Python,在上面的列表中,如果有两个连续的insert\u作业:('insert\u job:eee','insert\u job:fff'),那么我想先打印insert\u job:,在这种情况下,它将是insert\u job:eee,因为您需要项目的顺序,所以不需要字典。试着做下面的事情 LIST=['insert_job: aaa', 'box_name: bbb', 'insert_job: ccc', 'box_name: ddd', 'insert_job: eee', 'in
insert\u作业:('insert\u job:eee','insert\u job:fff')
,那么我想先打印insert\u job:
,在这种情况下,它将是insert\u job:eee
,因为您需要项目的顺序,所以不需要字典。试着做下面的事情
LIST=['insert_job: aaa', 'box_name: bbb', 'insert_job: ccc',
'box_name: ddd', 'insert_job: eee', 'insert_job: fff',
'box_name: ggg']
您可以使用
使用字典准备一个名为
LIST
@Gang-Um的字典,它是一个列表。字典是{},而[]是一个列表!使用itertools.groupby
。如果在迭代过程中有3个连续的?变异列表在很多情况下都不会正常运行,并且重复调用remove
意味着O(n**2)
可以在O(n)
中很小地解决。当OP声明的目标是过滤输出时,这也会破坏原始列表中的数据,没有迹象表明数据应该被丢弃。正确的,他不需要删除项目。我同意,推到新列表不是最佳解决方案,但更清楚的是,只有重复插入作业时才需要打印,或者除了重复的工作之外的所有工作?如果插入工作重复了5次,那么它应该打印第1个4个插入工作,并带有价值Hanks ShadowRanger,我不知道我为什么要这样做。为什么要投否决票?@-Steven Summers-我是新来的,仍然习惯于可用的选项,我没有意识到我投了否决票,这是一个错误,我现在试图改变它,但它不起作用。但我真的很感谢你的快速回答,这正是我所需要的。@Frank没关系,你现在应该可以做了。
seen = 0
for i in LIST:
if i.startswith("insert_job"):
if seen:
continue
else:
seen = 1
print i
else:
seen=0
# print i
from itertools import groupby
LIST = ['insert_job: aaa', 'box_name: bbb', 'insert_job: ccc',
'box_name: ddd', 'insert_job: eee', 'insert_job: fff',
'box_name: ggg']
for k, g in groupby(LIST, lambda s: s.split(':')[0]):
if k == 'insert_job':
items = list(g)
if len(items) > 1:
print(*items[:-1])