[問題] 該怎麼用dict處理這個問題?(附上code)

作者: Dong0129 (阿東跟上面講的情況一樣b)   2015-04-27 21:19:14
各位版友好,
請問我該如何運用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
.
.
.
好像在執行dict_file.setdefault那ㄧ句寫不進去...
請問我有哪裡寫錯嗎?
作者: SocketAM2 (AM2)   2015-04-27 21:36:00
這是在幫版友做智力測驗嗎?看了5分鐘才懂 我果然是笨蛋
作者: mars90226 (火星人)   2015-04-27 22:06:00
這個問題跟你上次問得很像啊?#1LBrjrc0 (Python)
作者: eight0 (欸XD)   2015-04-28 09:52:00
作者: penguin7272 (企鵝)   2015-04-28 10:47:00
作者: gh40402   2015-04-28 14:54:00
setdefault 那行改成dict_file[item]=str(seq[item]) + "." + str(num[item])就行了吧你用 setdefault 的話根本不會更新 所以最後得到都是 x.1d.setdefaut(k, v) 是說去看d的key有無k 有的話回傳d[k]沒的話就做 d[k] = v 然後回傳 v

Links booklink

Contact Us: admin [ a t ] ucptt.com