我有一个包含19列的csv文件,并希望将其作为字典,前两列是键(可能是一个元组或只是将它们合并为一个字符串),然后所有其他17列都是列表值。 excel文件如下所示:image of the cvs file
我想要这样的字典:
d1 = { "A , 222" : [1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1]}
d2={"B, 223" : [1,1,1,1,0,0,0,1,1,0,0,1,1,1,1,1]}
d3 = {....}
....
答案 0 :(得分:2)
以下是使用csv.reader
from csv import reader
d = {}
with open('infile.csv', newline='') as f:
r = reader(f)
for row in r:
if not row:
continue # Handles blank rows
key1, key2, *value = row
d[(key1, key2)] = value
编辑:
行key1, key2, *value = row
仅适用于Python 3.如果您无法使用该功能,则可以使用
key1, key2 = row[:2]
value = row[2:]
答案 1 :(得分:0)
你的意思是?
--log-req-encoder
答案 2 :(得分:0)
使用csv.reader可以这样做:
as_dict = {'{}, {}'.format(*row[:2]): row[2:] for row in reader if row}
data = StringIO(''.join('\n'.join(x.strip() for x in u"""
A,222,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1
B,223,1,1,1,1,0,0,0,1,1,0,0,1,1,1,1,1
""".split('\n')[1:-1])))
reader = csv.reader(data)
as_dict = {'{}, {}'.format(*row[:2]): row[2:] for row in reader if row}
print(as_dict)
{
'A, 222': ['1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'],
'B, 223': ['1', '1', '1', '1', '0', '0', '0', '1', '1', '0', '0', '1', '1', '1', '1', '1']
}