作者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/cn.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