我有包含 4 个字段的数据行
aaaa bbb1 cccc dddd
aaaa bbb2 cccc dddd
aaaa bbb3 cccc eeee
aaaa bbb4 cccc ffff
aaaa bbb5 cccc gggg
aaaa bbb6 cccc dddd
请耐心等待。
第一个和第三个字段始终相同 - 但我不需要它们,第 4 个字段可以相同或不同。问题是,我只想要来自不共享公共(public)字段的行的第 2 和第 4 个字段。比如从上面的数据中这样
bbb3 eeee
bbb4 ffff
bbb5 gggg
现在我不是说重复数据删除,因为那样会留下一个条目。如果第 4 个字段与另一行共享一个值,我不想要任何具有该值的行。
再次为询问可能很简单的问题而道歉。
最佳答案
给你:
from collections import defaultdict
LINES = """\
aaaa bbb1 cccc dddd
aaaa bbb2 cccc dddd
aaaa bbb3 cccc eeee
aaaa bbb4 cccc ffff
aaaa bbb5 cccc gggg
aaaa bbb6 cccc dddd""".split('\n')
# Count how many lines each unique value of the fourth field appears in.
d_counts = defaultdict(int)
for line in LINES:
a, b, c, d = line.split()
d_counts[d] += 1
# Print only those lines with a unique value for the fourth field.
for line in LINES:
a, b, c, d = line.split()
if d_counts[d] == 1:
print b, d
# Prints
# bbb3 eeee
# bbb4 ffff
# bbb5 gggg
关于Python 删除字段中具有共同值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089550/