作者ren0518 (不好說)
看板Python
標題[問題] csv轉為dictionary的問題
時間Thu Apr 4 00:21:57 2019
小弟是正在學python的大一菜雞
今天寫到一份題目是要將一份csv的檔案轉成字典
但是我怎麼寫都找不到怎麼解決問題
是要將csv檔的第一行為key
第二行為value
https://i.imgur.com/tHuuTnd.jpg
在迴圈裡面是無法印出特定的value
在迴圈外只印得出最後一個value
https://i.imgur.com/VjoKKiC.jpg
想請問大家是哪裡出問題呢?
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.236.59
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1554308519.A.34D.html
1F:推 ckc1ark: dic要在for迴圈外宣告04/04 00:29
2F:→ ckc1ark: 在for裡每次都產生新的dict04/04 00:29
可是row是在for那裡宣告的耶?
3F:推 TitanEric: 不太理解特定的value是什麼04/04 00:30
4F:→ TitanEric: dic會找最近的變數 也就是在loop中殘留的dic 神奇的pyt04/04 00:33
5F:→ TitanEric: hon變數存取範圍04/04 00:33
印不出來例如dic['1s']等等
※ 編輯: ren0518 (180.217.236.59), 04/04/2019 00:53:49
6F:推 CCWck: 你的dic只有一行啊,不是整組的字典 04/04 01:08
7F:→ CCWck: 用dic.items()檢查一下 04/04 01:12
8F:推 CCWck: 不過你的result看起來就是dictionary了。何不直接print(res 04/04 01:17
9F:→ CCWck: ult['1s'])? 04/04 01:17
10F:推 lemon651: row在for裡宣告跟dict在哪宣告什麼關係?你dict就是負責 04/04 03:49
11F:→ lemon651: 丟東西進去的啊... 04/04 03:49
12F:推 yp1369: 何不用pandas呢? 04/04 11:46
13F:推 lajji: 你for迴圈裡面每次都用新的dic覆蓋當然只印得出最後一個 04/04 12:53
感謝lajji大提醒
14F:推 art1: 看起來像是搞錯 csv.DictReader 的用法 04/04 14:24
15F:→ art1: DictReader若已經回傳一個串列,串列元素都是字典,何必又 04/04 14:27
16F:→ art1: 另外存到字典裏面? 04/04 14:27
17F:→ art1: 看別人的範例,DictReader是為每一列建立同樣鍵名的字典 04/04 14:29
18F:→ art1: 但你要的是使用每一列的第一行元素為鍵名,第二行為對應的值 04/04 14:30
19F:→ art1: 我搞錯了,lajji說的才是正確的,你不是附加上去而是覆蓋 04/04 14:32
20F:推 art1: 你應該在迴圈外宣告一個空的dic,然後用dic[row['key'] = 04/04 14:35
21F:→ art1: 迴圈內用 dic[row['key']] = row['value']的方式新增元素 04/04 14:35
感謝art大,我沒想到這一點,做出來了感謝,也謝謝回覆的各位
※ 編輯: ren0518 (180.217.201.162), 04/04/2019 15:25:59
※ 編輯: ren0518 (180.217.201.162), 04/04/2019 15:26:59