[問題] 計算名字list中開頭字母的人數

看板Python作者 (I think home)時間9年前 (2015/03/17 20:27), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/3 (看更多)
比如說 Jack是J開頭 Benson是B開頭 想計算list中個各字母開頭的人名有多少個 目前只想到用switch去寫, 但是這需要寫26個case, 請問有更簡單程式碼更短的寫法嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.10.148 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1426595245.A.CDC.html

03/17 20:39, , 1F
collections裡的Counter可以試試
03/17 20:39, 1F

03/17 20:40, , 2F
Counter(x[0] for x in namelist)
03/17 20:40, 2F

03/17 23:06, , 3F
土炮法: len(set(name[0] for name in namelist))
03/17 23:06, 3F

03/17 23:08, , 4F
我誤解題意了,請無視 orz
03/17 23:08, 4F

03/18 02:14, , 5F
name_count[ord(name[0]) - 65] += 1
03/18 02:14, 5F

03/18 02:15, , 6F
利用換算ASCII碼 - 65當索引值(0~25)
03/18 02:15, 6F

03/18 02:17, , 7F
不過此法要確保沒例外,不然就會List index out of range
03/18 02:17, 7F

03/18 02:17, , 8F
可先用一行確定值在65到90之間
03/18 02:17, 8F

03/19 02:13, , 9F
用for each檢查所有名字的開頭字母,dict存入
03/19 02:13, 9F

03/20 17:00, , 10F
謝謝各位大大 :)
03/20 17:00, 10F
文章代碼(AID): #1L21sjpS (Python)
文章代碼(AID): #1L21sjpS (Python)