这就是csv的样子
2015-05-16,3.99
2015-05-16,4.0
以下是代码,它试图将csv转换为dict:
with open('log.csv') as filename:
reader = csv.reader(filename,delimiter=',') #fieldnames=['Date','GPA']
display = {row[0]:row[1] for row in reader}
print display
输出:
$python test.py
{'2015-05-16': 4.0}
这应该是这样的:
$ python test.py
{'2015-05-16':3.99,'2015-05-16': 4.0}
答案 0 :(得分:2)
您不能这样做:字典需要不同的密钥,而您的CSV有两个具有相同密钥的条目(5月16日)。
如果更改log.csv,则代码按预期工作:
const char*
您可以执行某些操作以使密钥不同,例如添加行号:
{'2015-05-16': '3.99', '2015-05-17': '4.0'}
将输出
display = { (row[0], i):row[1] for i, row in enumerate(reader) }
或者您可以使用dicts的数组(并获得不同的输出,但现在包含所有数据):
{('2015-05-16', 0): '3.99', ('2015-05-16', 1): '4.0'}
或者你可以尝试分组同一个键的所有值,例如。
display = [ { row[0]:row[1] } for row in reader ]
[{'2015-05-16': '3.99'}, {'2015-05-16': '4.0'}]
但是否则,字典中的每个相同的键都会覆盖之前的任何一个键,这样您就可以始终看到''只有最后一个。
答案 1 :(得分:0)
当您尝试在dict中为现有键插入不同的值时,它会覆盖先前的值