Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将dict列表作为连续列写入csv_Python_List_Python 3.x_Csv_Dictionary - Fatal编程技术网

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连续写入下两列。首先,不要将其称为
列表
。因此,这不是代码编写服务,即使是这样,您的要求也不明确。请复习。