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

2024-05-15 14:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 项目列表newoutputitemlistfoldersglue
1条回答
网友
1楼 · 发布于 2024-05-15 14:46:21

您必须保留已看到项目的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']

相关问题 更多 >