Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按嵌套列表中的第一个元素筛选出嵌套列表_Python_Python 3.x_List - Fatal编程技术网

Python 按嵌套列表中的第一个元素筛选出嵌套列表

Python 按嵌套列表中的第一个元素筛选出嵌套列表,python,python-3.x,list,Python,Python 3.x,List,我想根据每个列表中的第一个元素筛选嵌套列表。我有以下嵌套列表: #“nom”是重复的 输入1=[ [nom',N',eye'], ['nom','N','face'], ['acc','E','computer'], ['dat','C','screen'] ] #“acc”是重复的 输入2=[ ['nom','O','heart'], ['acc','O','root'], [acc',C',life'], ['dat'、'E'、'证据'] ] #没有重复的 输入3=[ ['nom','O',

我想根据每个列表中的第一个元素筛选嵌套列表。我有以下嵌套列表:

#“nom”是重复的
输入1=[
[nom',N',eye'],
['nom','N','face'],
['acc','E','computer'],
['dat','C','screen']
]
#“acc”是重复的
输入2=[
['nom','O','heart'],
['acc','O','root'],
[acc',C',life'],
['dat'、'E'、'证据']
]
#没有重复的
输入3=[
['nom','O','author'],
['acc'、'O'、'tear'],
]
对于每个父列表,我希望找到第一个元素相同的子列表,并在输出中保留第一个子列表。因此,我希望得到以下输出:

#来自输入1
#保持['nom','N','eye']
#删除['nom','N','face']
输出1=[
[nom',N',eye'],
['acc','E','computer'],
['dat','C','screen']
]
#来自输入2
#保持['acc'、'O'、'root']
#删除['acc','C','life']
输出2=[
['nom','O','heart'],
['acc','O','root'],
['dat'、'E'、'证据']
]
#来自输入3
#保留每个子列表,因为没有重复项
输出3=[
['nom','O','author'],
['acc'、'O'、'tear'],
]

如何使用python3实现这一点?

如果您使用的是python3.6或更高版本,则可以使用
dict
保留插入顺序这一事实。反向迭代列表并将其插入一个
目录
,然后反转值

def filter_list(lst):
    d = {lst[i][0]: lst[i] for i in range(len(lst) - 1, -1, -1)}
    return list(reversed(d.values()))

input1 = filter_list(input1)
print(input1) # [['nom', 'N', 'face'], ['acc', 'E', 'computer'], ['dat', 'C', 'screen']]