统计列表中重复的元素

我还是个新手。我正在尝试找到一种简单的方法来获得文件(第一列)中重复的元素数量的计数
例如,包含以下列表的文件(-第一列包含IP地址)
10.2.1.12 2 4
192.12.23.2 3 5
10.2.1.12 1 2
192.11.23.1 3 5
10.2.1.12 4 5
192.12.23.2 1 6
产出:
IP地址计数(第1列重复次数)
10.2.1.12 3
192.12.23.2 2
192.11.23.1 1

# 回答1


如果顺序不重要,则可以使用字典和dict方法setDefault轻松完成此操作。

选择 | 换行 | 行号
  1. f = open("ip.txt")
  2. dd = {}
  3. for line in f:
  4.     lineList = line.split()
  5.     if lineList:
  6.         ip = lineList[0]
  7.     v = dd.setdefault(ip, 0)
  8.     dd[ip] += 1
  9.  
  10. f.close()
  11.  
  12. for key in dd:
  13.     print key, dd[key]

按计数顺序显示:

选择 | 换行 | 行号
  1. ipList = [(key, dd[key]) for key in dd]
  2. ipList.sort(key=lambda a: a[1])
  3. for item in ipList:
  4.     print item[0], item[1]
# 回答2


你可以用词典来做这件事

选择 | 换行 | 行号
  1. d=dict()
  2. fp=open("file.txt")
  3. for i in fp:
  4.     l=i.split()[0]
  5.     if l in d:
  6.         d[l] += 1
  7.     else:
  8.         d[l] = 1
  9.  
  10. print d.items()
  11.  
  12.  

标签: python

添加新评论