Python 板


LINE

counter_dict = dict() with open(output_file, 'wb') as fo: with open(file1, 'rb') as fi: for line in fi.read().splitlines(): try: pair = left, right = line.split('>') # format check for item in pair: try: counter_dict[item] += 1 except: counter_dict.setdefault(item, 1) fo.write("{l}.{num_l}>{r}.{num_r}\n".format( l = left, num_l = counter_dict[left], r = right, num_r = counter_dict[right] ) except ValueError: # this line is not "X>Y" # case 1: "too many values to unpack" # case 2: "need more than 1 value to unpack" fo.write('Invalid line: {original}\n'.format(original=line)) continue except: # unexpected error raise 能保证输入的格式的话 外层的try、except可以拿掉 (最内层要留着) 但应该不会感觉到速度差异 没有真的测过,只是练习一下语法 希望没有错太多,欢迎各位高手指正 ※ 引述《Dong0129 (阿东)》之铭言: : 标题: [问题] 该怎麽用dict处理这个问题?(附上code@@) : 时间: Mon Apr 27 21:19:14 2015 : : 各位版友好, : : 请问我该如何运用dict转换以下需求? : : file1: : 2>4 : 1>2 : 2>3 : 3>5 : 3>1 : 1>4 : 4>2 : . : . : . : 转换成: : file2: : 1.1>2.1 : 3.1>1.2 : 1.3>4.1 : 4.2>5.1 : 4.3>3.2 : 3.3>2.2 : 2.3>1.4 : . : . : . : : 即.左边的数字为第几种,而.右边的数字为出现几次, : : 麻烦各位大大帮帮忙了! : : : 目前撰写的程式为: : : rfd=open(file1,"r") : wfd.open(file2,"w") : dict_file=dict() : num={} : seq={} : for line in rfd.read().splitlines(): : item1,item2=line.split('>') : for item in (item1,item2): : if not item in num: : num[item]=1 : seq[item]=len(num.keys()) : else: : num[item]+=1 : dict_file.setdefault(item,str(seq[item])+"."+str(num[item])) : wfd.write(dict_file[item1]+'>'+dict_file[item2]) : rfd.close() : wfd.close() : : file2的内容: : 1.1>2.1 : 3.1>1.1 : 1.1>4.1 : . : . : . : : -- :



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.109.243
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1430140757.A.DBB.html : → SocketAM2: 这是在帮版友做智力测验吗? 04/27 21:36 : : 不是@@因为我对於dict的用法还不太熟, : : 因此想要请教其他版友的写法为何 : ※ 编辑: Dong0129 (220.137.109.243), 04/27/2015 21:42:22 : → SocketAM2: 看了5分钟才懂 我果然是笨蛋 04/27 21:41 : : ...应该是我表达能力不够好...下次会用比较好的举例方式... : ※ 编辑: Dong0129 (220.137.109.243), 04/27/2015 21:52:33 : 推 mars90226: 这个问题跟你上次问得很像啊? 04/27 22:06 : → mars90226: #1LBrjrc0 (Python) 04/27 22:07 : : 嗯嗯,但有个小地方不同, : 上次是如果file1有相同的资料,file2就不给新的代号, : 这次想要做到即使是相同资料,也会给新的代号 : : 对於dict的概念还不够熟,目前也正在写程式, : 谢谢您! : ※ 编辑: Dong0129 (220.137.109.243), 04/27/2015 22:13:03 : ※ 编辑: Dong0129 (220.137.109.243), 04/27/2015 22:42:30 : ※ 编辑: Dong0129 (220.137.109.243), 04/27/2015 22:42:46 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.23.186
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1430147997.A.45D.html
1F:推 Dong0129: 您好,谢谢您的指点,我好像搞错了setdefault的用途... 04/27 23:48
2F:→ Dong0129: 输出时.的左边并不是放原本的item,而是要放item种类@@ 04/28 11:01







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP