:
seen = set()
block = [row for row in block if row[0] not in seen and not seen.add(row[0])]
이 는 고유의 첫 번째 요소를 가지고 행을 포함하는block
를 재 구축; 주어진 첫 번째 값이있는 첫 번째 행만 유지됩니다.
그냥 고유 행을 유지하고 이상의 항목이 모든 행을 제거하려면 다음block
트림, 각각의 제 요소가 존재 얼마나 많은 시간을 추적 할 collections.Counter()
object를 사용해야합니다 :
from collections import Counter
counts = Counter(row[0] for row in block)
block = [row for row in block if counts[row[0]] == 1]
데모 :
>>> from pprint import pprint
>>> from collections import Counter
>>> 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']
... ]
>>> seen = set()
>>> pprint([row for row in block if row[0] not in seen and not seen.add(row[0])])
[['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']]
>>> counts = Counter(row[0] for row in block)
>>> pprint([row for row in block if counts[row[0]] == 1])
[['alfa', 'T31360N', '2013-12-19 12:07:2'],
['gamma', 'E61460N', '2013-12-19 13:58:2'],
['delta', 'D133PR01', '2013-12-19 14:19:4']]
당신은리스트의 목록을 의미합니까? Python에는 * block * 같은 것이 없습니다. –
예. 나는 목록의 목록을 의미한다. 죄송합니다 – GergA
''beta ''로 시작하는 목록을 모두 제거 하시겠습니까? 아니면 단지 두 번째? –