鱼C论坛

 找回密码
 立即注册
查看: 1807|回复: 9

[已解决]统计一值对应多健

[复制链接]
发表于 2018-3-15 16:35:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如对应文档:
12 23
12 23
10 3
12 11
10 3  
12 2
13 23
2  24
2  24
2  24

统计结果为
12  23  2(次数)
12  11  1
12  2    1
10  3    2
13  23  1
2    24  3

用python 或awk都可以(其他方法也行),怎么写程序?
最佳答案
2018-3-15 18:01:19
  1. dic={}
  2. with open(r'd:\1.txt') as f:
  3.     l = f.readlines()

  4. for i in l:
  5.     if i in dic:
  6.         dic[i]+=1
  7.     else:
  8.         dic[i]=1
  9. for k,v in dic.items():
  10.     print(k, ':', v)
复制代码

随便写了一下,你看一下吧,应该基本就是这样了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-15 17:03:38 | 显示全部楼层
将以下数据保存到 1.txt文件中,与python代码放在同一目录。
12 23
12 23
10 3
12 11
10 3
12 2
13 23
2 24
2 24
2 24
  1. with open('1.txt', 'r') as f:
  2.     a = f.readlines()

  3. data = [i.strip('\n').split(' ') for i in a]
  4. data = sorted(data, key = lambda x:int(x[0]), reverse = True)
  5. result = []
  6. for i in data:
  7.     if i not in result:
  8.         result.append(i)
  9.         print(i[0], i[1], data.count(i))
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-15 16:44:59 | 显示全部楼层
1、每一行的两个数,建立一个元组
2、把所有元组放进一个列表
3、用set函数剔除列表内的重复元素
4、计算set内每个元素在列表内的个数
5、输出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 16:53:43 | 显示全部楼层
  1. str1 = '''12 23
  2. 12 23
  3. 10 3
  4. 12 11
  5. 10 3
  6. 12 2
  7. 13 23
  8. 2  24
  9. 2  24
  10. 2  24'''
  11. dict1 ={}
  12. for i in str1.split('\n'):
  13.     if i not in dict1:
  14.         dict1[i] = 1
  15.     else:
  16.         dict1[i] += 1
  17. for k, v in dict1.items():
  18.     print(k,v)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 16:54:30 | 显示全部楼层
遍历读取每一行,并将其设置为一个键,值为1
搜索是否已存在该键,有则该键值加一
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 18:01:19 | 显示全部楼层    本楼为最佳答案   
  1. dic={}
  2. with open(r'd:\1.txt') as f:
  3.     l = f.readlines()

  4. for i in l:
  5.     if i in dic:
  6.         dic[i]+=1
  7.     else:
  8.         dic[i]=1
  9. for k,v in dic.items():
  10.     print(k, ':', v)
复制代码

随便写了一下,你看一下吧,应该基本就是这样了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-15 19:54:02 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 20:48:02 From FishC Mobile | 显示全部楼层
大约在冬季 发表于 2018-3-15 19:54
谢谢,很好用

他们写的比我好,我得转换成二维数组有些没必要了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-16 16:54:27 | 显示全部楼层
shigure_takimi 发表于 2018-3-15 20:48
他们写的比我好,我得转换成二维数组有些没必要了。

12  23  23
12  11  1
12  2    1
10  3    2
13  23  1
2    24  24 24
我发现如果用次数做分析效果不理想,如果把它直接加在后面该怎么改?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 17:28:55 | 显示全部楼层
大约在冬季 发表于 2018-3-16 16:54
12  23  23
12  11  1
12  2    1
  1. #  把最后一个Print语句改一下就可以了。

  2. with open('1.txt', 'r') as f:
  3.     a = f.readlines()

  4. data = [i.strip('\n').split(' ') for i in a]
  5. data = sorted(data, key = lambda x:int(x[0]), reverse = True)
  6. result = []
  7. for i in data:
  8.     if i not in result:
  9.         result.append(i)
  10.         print(i[0], (str(i[1])+' ')*data.count(i))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-8 16:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表