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/m.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/m.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燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP