我对编码和寻求以下指导非常陌生......
我的csv输出目前是这样的:
'Age, First Name, Last Name, Mark'
'21, John, Smith, 68'
'16, Alex, Jones, 52'
'42, Michael, Carpenter, 92 '
如何创建最终看起来像这样的字典:
dictionary = {('age' : 'First Name', 'Mark'), ('21' : 'John', '68'), etc}
我希望第一个值成为关键 - 并且只想要另外两个值,而我很难找到解决这个问题的方法。
到目前为止我已经
了data = open('test.csv', 'r').read().split('\n')
我试图将每个部分分成一个字符串
for row in data:
x = row.split(',')
编辑:
感谢那些为解决我的问题提供了一些帮助的人。
使用后
myDic = {}
for row in data:
tmpLst = row.split(",")
key = tmpLst[0]
value = (tmpLst[1], tmpLst[-1])
myDic[key] = value
我的数据是
['Age', 'First Name', 'Last Name', 'Mark']
['21', 'John', 'Smith', '68']
['16', 'Alex', 'Jones', '52']
['42', 'Michael', 'Carpenter', '92']
但是得到一个IndexError:list index超出范围
value = (tmpLst[1], tmpLst[-1])
即使我可以看到它应该在索引的范围内。
有谁知道为什么会出现这个错误或需要更改什么?
答案 0 :(得分:1)
假设实际有效的CSV文件如下所示:
Age,First Name,Last Name,Mark
21,John,Smith,68
16,Alex,Jones,52
42,Michael,Carpenter,92
以下代码应该执行您想要的操作:
from __future__ import print_function
import csv
with open('test.csv') as csv_file:
reader = csv.reader(csv_file)
d = { row[0]: (row[1], row[3]) for row in reader }
print(d)
# Output:
# {'Age': ('First Name', 'Mark'), '16': ('Alex', '52'), '21': ('John', '68'), '42': ('Michael', '92')}
如果d = { row[0]: (row[1], row[3]) for row in reader }
令人困惑,请考虑以下方法:
d = {}
for row in reader:
d[row[0]] = (row[1], row[3])
答案 1 :(得分:1)
我猜你想要这样的输出:
字典= {'年龄' :('名字','马克')} 然后您可以使用以下代码:
myDic = {}
for row in data:
tmpLst = row.split(",")
key = tmpLst[0]
value = (tmpLst[1], tmpLst[-1])
myDic[key] = value