【发布时间】:2014-09-02 02:35:15
【问题描述】:
我有一个包含几列的 .csv 文件,其中一列填充了随机数,我想在那里找到重复的值。如果有 - 奇怪的情况,但毕竟这是我想要检查的 - 我想显示/存储存储这些值的完整行。
为了说清楚,我有这样的东西:
首先,随便,230,随便,等等
二、随便、11、随便等
三、随便、46、随便等
四、随便、十八、随便等
五、随便、14、随便等
六、随便、48、随便等
七、随便、91、随便等
八、随便、十八、随便等
九、随便、67、随便等
我想拥有:
第四,随便,18,随便,等等
八、随便、十八、随便等
为了查找重复值,我将该列存储到字典中,并计算每个键以发现它们出现了多少次。
import csv
from collections import Counter, defaultdict, OrderedDict
with open(file, 'rt') as inputfile:
data = csv.reader(inputfile)
seen = defaultdict(set)
counts = Counter(row[col_2] for row in data)
print "Numbers and times they appear: %s" % counts
我明白了
计数器({'18': 2, '46': 1, '67': 1, '48': 1,...})
现在问题来了,因为我没有设法将密钥与重复链接并在以后计算它。如果我这样做了
for value in counts:
if counts > 1:
print counts
我只会拿钥匙,这不是我想要的,也不是每一个价值(更不用说我不仅要打印,还要打印整行...)
基本上我正在寻找一种方法
If there's a repeated number:
print rows containing those number
else
print "No repetitions"
提前致谢。
【问题讨论】:
-
在 awk 中可以作为答案吗?这很简单。
-
是的...如你所愿。我完全没有 AWK 的背景,但由于 Python 是一种多范式语言,因此也许可以调整解决方案。
标签: python csv dictionary