Python 3.4:如果条件存在则将值添加到列表中

jul*_*jul 4 list append python-3.x

我有这样一个场景:

mainList = [[9,5],[17,3],[23,1],[9,2]]
secondaryList = [9,12,28,23,1,6,95]
myNewList = []

myNewList.append([[a,b] for a,b in mainList if a in secondaryList])
Run Code Online (Sandbox Code Playgroud)

这个,把我还给我:

myNewList = [[9,5],[23,1],[9,2]]
Run Code Online (Sandbox Code Playgroud)

但我只需要第一次出现“a”。换句话说我需要获得:

myNewList = [[9,5],[23,1]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?

Mar*_*ler 5

首先:

myNewList = []
myNewList.append([[a,b] for a,b in mainList if a in secondaryList])
Run Code Online (Sandbox Code Playgroud)

简单来说就是一样

myNewList = [[a,b] for a,b in mainList if a in secondaryList]
Run Code Online (Sandbox Code Playgroud)

然后:你正在构建的功能在功能上是一个Python字典。您的二元素列表mainListdict.items()!

所以你要做的就是构建一个dictmainList反转它,因为通常,你只保存最后一个,而不是第一次出现):

mainDict = dict([reversed(mainList)])
Run Code Online (Sandbox Code Playgroud)

然后你只需制作新列表:

myNewList = [ (key, mainDict[key]) for key in secondaryList ]
Run Code Online (Sandbox Code Playgroud)