从python中的列表列表中删除相同的行

从python中的列表列表中删除相同的行,python,list,python-2.7,Python,List,Python 2.7,我有一个python列表。 我想删除第一个元素已经在块中的行 block = [ ['alfa', 'T31360N', '2013-12-19 12:07:2'], ['beta', 'D41535N', '2013-12-19 12:20:1'], ['gamma', 'E61460N', '2013-12-19 13:58:2'], ['delta', 'D133PR01', '2013-12-19 14:19:4'], ['beta', 'Q333

我有一个python列表。 我想删除第一个元素已经在块中的行

block = [
    ['alfa', 'T31360N', '2013-12-19 12:07:2'],
    ['beta', 'D41535N', '2013-12-19 12:20:1'],
    ['gamma', 'E61460N', '2013-12-19 13:58:2'],
    ['delta', 'D133PR01', '2013-12-19 14:19:4'],
    ['beta', 'Q3332N', '2013-12-19 14:19:5']
]
如何从列表中删除“beta”开始的行?

适应您的列表:

seen = set()
block = [row for row in block if row[0] not in seen and not seen.add(row[0])]
这将重建
以仅包含具有唯一第一个元素的行;因此,只保留具有给定第一个值的第一行

要仅保留唯一行并删除包含多个条目的所有行,您需要使用跟踪每个第一个元素出现的次数,然后修剪

from collections import Counter

counts = Counter(row[0] for row in block)
block = [row for row in block if counts[row[0]] == 1]
演示:

根据您的列表进行调整:

seen = set()
block = [row for row in block if row[0] not in seen and not seen.add(row[0])]
这将重建
以仅包含具有唯一第一个元素的行;因此,只保留具有给定第一个值的第一行

要仅保留唯一行并删除包含多个条目的所有行,您需要使用跟踪每个第一个元素出现的次数,然后修剪

from collections import Counter

counts = Counter(row[0] for row in block)
block = [row for row in block if counts[row[0]] == 1]
演示:

根据您的列表进行调整:

seen = set()
block = [row for row in block if row[0] not in seen and not seen.add(row[0])]
这将重建
以仅包含具有唯一第一个元素的行;因此,只保留具有给定第一个值的第一行

要仅保留唯一行并删除包含多个条目的所有行,您需要使用跟踪每个第一个元素出现的次数,然后修剪

from collections import Counter

counts = Counter(row[0] for row in block)
block = [row for row in block if counts[row[0]] == 1]
演示:

根据您的列表进行调整:

seen = set()
block = [row for row in block if row[0] not in seen and not seen.add(row[0])]
这将重建
以仅包含具有唯一第一个元素的行;因此,只保留具有给定第一个值的第一行

要仅保留唯一行并删除包含多个条目的所有行,您需要使用跟踪每个第一个元素出现的次数,然后修剪

from collections import Counter

counts = Counter(row[0] for row in block)
block = [row for row in block if counts[row[0]] == 1]
演示:



你是说一张名单吗?Python中没有块这样的东西。我指的是名单。对不起,您是否要删除以
“beta”开头的两个列表?或者只是第二个?如果不是问题,我希望看到两种解决方案:-)。我主要只想删除第二个。你是说一个列表吗?Python中没有块这样的东西。我指的是名单。对不起,您是否要删除以
“beta”开头的两个列表?或者只是第二个?如果不是问题,我希望看到两种解决方案:-)。我主要只想删除第二个。你是说一个列表吗?Python中没有块这样的东西。我指的是名单。对不起,您是否要删除以
“beta”开头的两个列表?或者只是第二个?如果不是问题,我希望看到两种解决方案:-)。我主要只想删除第二个。你是说一个列表吗?Python中没有块这样的东西。我指的是名单。对不起,您是否要删除以
“beta”开头的两个列表?或者只是第二个?如果不是问题,我希望看到两种解决方案:-)。我主要只想删除第二个。做
seen=set()
seen=[]
和更改
seen.add()
seen.append()
,有什么好处吗?@TomFenech:没有,因为
set
成员资格测试要快得多。谢谢。那应该用更好的措辞。我以为你选择了更好的方式,我只是想知道为什么!做
seen=set()
seen=[]
和更改
seen.add()
seen.append()
有什么好处吗?@TomFenech:没有,因为
set
成员资格测试要快得多。谢谢。那应该用更好的措辞。我以为你选择了更好的方式,我只是想知道为什么!做
seen=set()
seen=[]
和更改
seen.add()
seen.append()
有什么好处吗?@TomFenech:没有,因为
set
成员资格测试要快得多。谢谢。那应该用更好的措辞。我以为你选择了更好的方式,我只是想知道为什么!做
seen=set()
seen=[]
和更改
seen.add()
seen.append()
有什么好处吗?@TomFenech:没有,因为
set
成员资格测试要快得多。谢谢。那应该用更好的措辞。我以为你选择了更好的方式,我只是想知道为什么!