在列表中选择前3个唯一项

时间:2020-09-23 04:17:48

标签: python python-3.x list nested-lists

我有一个项目列表,它输出一个列表列表:

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']

1 个答案:

答案 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']
相关问题