Python 将dict列表作为连续列写入csv
我正试着写一张清单,上面写着:Python 将dict列表作为连续列写入csv,python,list,python-3.x,csv,dictionary,Python,List,Python 3.x,Csv,Dictionary,我正试着写一张清单,上面写着: 列表=[dict1,dict2,…] 以下是: dict1={key1:value1,key2:value2,…} 如何将每个dict连续写入两列,并写入一个csv文件?第1列和第2列属于dict1的键和值,第3列和第4列包含dict2的键和值。。。等等 假设您的列表是l=[{1:2,3:4,5:6},{9:10,11:12,7:8},{17:18,13:14,15:16}]。首先从每个字典的索引中提取键和值: [l0.items() for l0 in
列表=[dict1,dict2,…]
以下是:
dict1={key1:value1,key2:value2,…}
如何将每个dict连续写入两列,并写入一个csv文件?第1列和第2列属于
dict1
的键和值,第3列和第4列包含dict2
的键和值。。。等等 假设您的列表是l=[{1:2,3:4,5:6},{9:10,11:12,7:8},{17:18,13:14,15:16}]
。首先从每个字典的索引中提取键和值:
[l0.items() for l0 in l]
# [dict_items([(1, 2), (3, 4), (5, 6)]),
# dict_items([(9, 10), (11, 12), (7, 8)]),
# dict_items([(17, 18), (13, 14), (15, 16)])]
现在,让我们将每个元组列表合并成一个平面列表:
from itertools import chain
[list(chain.from_iterable(l0.items())) for l0 in l]
# [[1, 2, 3, 4, 5, 6],
# [9, 10, 11, 12, 7, 8],
# [17, 18, 13, 14, 15, 16]]
结果可以直接反馈给CSV编写器。假设您的列表是
l=[{1:2,3:4,5:6},{9:10,11:12,7:8},{17:18,13:14,15:16}]
。首先从每个字典的索引中提取键和值:
[l0.items() for l0 in l]
# [dict_items([(1, 2), (3, 4), (5, 6)]),
# dict_items([(9, 10), (11, 12), (7, 8)]),
# dict_items([(17, 18), (13, 14), (15, 16)])]
现在,让我们将每个元组列表合并成一个平面列表:
from itertools import chain
[list(chain.from_iterable(l0.items())) for l0 in l]
# [[1, 2, 3, 4, 5, 6],
# [9, 10, 11, 12, 7, 8],
# [17, 18, 13, 14, 15, 16]]
结果可以直接输入CSV写入程序。使用itertools链:
import csv
from itertools import chain
dictionary = [{'key1': 'value1'}, {'key2': 'value2'},
{'key3': 'value3'}, {'key4': 'value4'}]
with open('file', 'w') as fh:
csv_file = csv.writer(fh)
csv_file.writerow(chain(*(i for e in dictionary for i in zip(e.keys(), e.values()))))
结果:
cat file
key1,value1,key2,value2,key3,value3,key4,value4
使用itertools链:
import csv
from itertools import chain
dictionary = [{'key1': 'value1'}, {'key2': 'value2'},
{'key3': 'value3'}, {'key4': 'value4'}]
with open('file', 'w') as fh:
csv_file = csv.writer(fh)
csv_file.writerow(chain(*(i for e in dictionary for i in zip(e.keys(), e.values()))))
结果:
cat file
key1,value1,key2,value2,key3,value3,key4,value4
请尝试这个程序,希望它能产生您所需要的输出
import csv
dict1 = {'key11' : 'value11', 'key12' : 'value12', 'key13' : 'value13'}
dict2 = {'key21' : 'value21', 'key22' : 'value22', 'key23' : 'value23'}
dict3 = {'key31' : 'value31', 'key32' : 'value32', 'key33' : 'value33'}
list1 = [dict1, dict2, dict3]
with open('mycsvfile.csv','wb') as f:
w = csv.writer(f)
for entry in list1:
lis = []
for key,values in sorted(entry.items()):
lis.append(key)
lis.append(values)
w.writerow(lis)
输出:
key11,value11,key12,value12,key13,value13
key21,value21,key22,value22,key23,value23
key31,value31,key32,value32,key33,value33
如果有任何疑问,请告诉我。请尝试此程序,希望它能产生您所需的输出
import csv
dict1 = {'key11' : 'value11', 'key12' : 'value12', 'key13' : 'value13'}
dict2 = {'key21' : 'value21', 'key22' : 'value22', 'key23' : 'value23'}
dict3 = {'key31' : 'value31', 'key32' : 'value32', 'key33' : 'value33'}
list1 = [dict1, dict2, dict3]
with open('mycsvfile.csv','wb') as f:
w = csv.writer(f)
for entry in list1:
lis = []
for key,values in sorted(entry.items()):
lis.append(key)
lis.append(values)
w.writerow(lis)
输出:
key11,value11,key12,value12,key13,value13
key21,value21,key22,value22,key23,value23
key31,value31,key32,value32,key33,value33
请让我知道任何疑问。您想在第5列和第6列中输入dict3吗?是的-连续输入下两列。首先,不要将其称为
列表
。因此,这不是代码编写服务,即使是,您的要求也不明确。请检查。您想在第5列和第6列中使用dict3吗?是-将dict3连续写入下两列。首先,不要将其称为列表
。因此,这不是代码编写服务,即使是这样,您的要求也不明确。请复习。