免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4089 | 回复: 10
打印 上一主题 下一主题

求一段代码 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-02-27 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-07 20:23 |只看该作者 |倒序浏览
最近老集中不了精神,有个问题困扰着死活想不到怎么解决,上来这里求救一下!
有以下数据
$ cat  data
3A        kkkk
4B        yyyy
9F        kkkk
25        ewsl
01        falk
23        yyyy
FF     kkkk

这里希望以第二列为依据,当第二列内容相同时,第一列内容合并
结果是
3A/9F/FF        kkkk
4B/23        yyyy
25                ewsl
01                falk

用awk可以做出来了,这里python要如何实现?

论坛徽章:
0
2 [报告]
发表于 2010-07-07 20:55 |只看该作者
回复 1# harmful_001
第二列的值 作为字典的key就可以了。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-02-27 06:20:00
3 [报告]
发表于 2010-07-07 22:44 |只看该作者
回复 2# luffy.deng


    对,我也是这样想的,感觉代码应该比较简单。可脑袋就是没转过来,能写出来学习下吗

论坛徽章:
0
4 [报告]
发表于 2010-07-07 23:03 |只看该作者
回复 3# harmful_001
直接写就行了。
  1. s=['3A        kkkk',
  2. '4B        yyyy',
  3. '9F        kkkk',
  4. '25        ewsl',
  5. '01        falk',
  6. '23        yyyy',
  7. 'FF        kkkk',]

  8. d={}
  9. for  i in s:
  10.     v,k=i.split()
  11.     if not d.has_key(k):
  12.         d[k]=[]
  13.     d[k].append(v)
  14. print d
复制代码

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-02-27 06:20:00
5 [报告]
发表于 2010-07-08 15:06 |只看该作者
回复  harmful_001
直接写就行了。
luffy.deng 发表于 2010-07-07 23:03



     if not d.has_key(k):
         d[k]=[]

     这里是关键,就没想到value做list。。谢谢!

     这里把结果再完善下
  1. f = open('data','r')
  2. lines = f.readlines()
  3. f.close()

  4. words = {}
  5. for line in lines:
  6.         v,k = line.split()
  7.         if not words.has_key(k):
  8.                 words[k] = []
  9.         words[k].append(v)
  10. #print words
  11. for key in words.keys():
  12.         if len(words[key]) > 1:
  13.                 print '/'.join(words[key])+'\t'+key
  14.         else:
  15.                 print words[key][0]+'\t'+key
复制代码

论坛徽章:
0
6 [报告]
发表于 2010-07-08 18:21 |只看该作者
         if len(words[key]) > 1:
                 print '/'.join(words[key])+'\t'+key
         else:
                 print words[key][0]+'\t'+key
harmful_001 发表于 2010-07-08 15:06

这种if不需要。
s=['aa']
print '/'.join(s)

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-02-27 06:20:00
7 [报告]
发表于 2010-07-09 10:31 |只看该作者
谢谢!
这样的确简单很多。。

论坛徽章:
1
平安夜徽章
日期:2015-12-26 00:06:30
8 [报告]
发表于 2010-07-09 11:04 |只看该作者
麻烦把awk代码让我看看 {:3_203:}

论坛徽章:
0
9 [报告]
发表于 2010-07-09 16:59 |只看该作者
fd = open("a.txt",'r')
result = {}

for i in fd:
    temp = i.split()
    if temp[1] not in result:
            result[temp[1]]=[]
    result[temp[1]].append(temp[0])
for i in result.keys():
    print '/'.join(result[i])

论坛徽章:
0
10 [报告]
发表于 2010-07-30 01:27 |只看该作者
system("awk ****")


搞定
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP