从python中的列表列表中删除相同的行
我有一个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
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
成员资格测试要快得多。谢谢。那应该用更好的措辞。我以为你选择了更好的方式,我只是想知道为什么!