某次考試遇到一大學排名問題,當時沒做出來,現試解如下,
有如下資料檔案,包括一組大學排名,包括名次,學校名,所屬國別,現要求按特定格式輸出
輸出格式要求
國別:該國入選高校數量:入選高校串列
如
美國: 2:加州理工,哈佛
英國: 2:牛津,劍橋
中國: 1:清華
# 1,加州理工,美國
# 2,哈佛,美國
# 3,牛津,英國
# 4,劍橋,英國
# 5,清華,中國
fi = open('data.txt', 'r', encoding='utf-8')
d = {}
for line in fi:
ls = line.strip().split(',')
d[ls[2]] = [0, []]//按要求構造字典,鍵為國名,值為一個嵌套的串列,第一個是入選高校數,第二個為入選高校串列
//多次嘗試,沒找到all-in-one的方式能一次創建字典并填入所需資料,所以采取先構造初始化字典,然后再回圈一次,更新字典
fi.seek(0)
for line in fi:
ls = line.strip().split(',')
d[ls[2]][0] = d.get(ls[2], 0)[0] + 1
d[ls[2]][1].append(ls[1])
for k in d:
print('{:>4}:{:>4}:{}'.format(k, d[k][0], ','.join(d[k][1])))
fi.close()
感徑訓有更好的解法,如果你有更好的答案請告訴我,
第2版解法,感覺好了很多
fi = open('data.txt', 'r', encoding='utf-8')
d = {}
for line in fi:
ls = line.strip().split(',')
if ls[2] not in d:
d[ls[2]] = [0, []]//構造字典
d[ls[2]][0] = d.get(ls[2], 0)[0] + 1
d[ls[2]][1].append(ls[1])
for k in d:
print('{:>4}:{:>4}:{}'.format(k, d[k][0], ','.join(d[k][1])))
fi.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137356.html
標籤:python
下一篇:成功解決ParserError: Error tokenizing data. C error: Expected 2 fields in line 53, saw 3
