我有一个项目列表,它输出一个列表列表:
item_list = ['book', 'pen']
output = [
['pencil', 'eraser', 'pen', 'glue', 'folders'],
['notepad', 'book','pencil', 'markers','ruler','scissors']
]
是否有一种方法可以将输出作为唯一的项目列表包含每个子列表中的前3个项目,但不包含在初始item_list
中?
,以便输出看起来像(准确的顺序):
new_output = ['pencil', 'eraser', 'glue', 'notepad', 'markers', 'ruler']
或者,如果可能的话:
new_output = ['pencil', 'notepad', 'eraser', 'markers', 'glue','ruler']
答案 0 :(得分:1)
您必须保留已见项目的set
才能找到唯一的项目。一个简单的实现是:
item_list = ['book', 'pen']
output = [['pencil', 'eraser', 'pen', 'glue', 'folders'],
['notepad', 'book', 'pencil', 'markers', 'ruler', 'scissors']]
already_seen = set(item_list)
new_output = []
for sublist in output:
new_sublist = [item for item in sublist if item not in already_seen]
new_output.extend(new_sublist[:3])
already_seen |= set(new_sublist[:3])
print(new_output)
输出:
['pencil', 'eraser', 'glue', 'notepad', 'markers', 'ruler']