Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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 如何将复杂的词典添加到excel电子表格?_Python_Python 3.x_Excel_Dictionary_Spreadsheet - Fatal编程技术网

Python 如何将复杂的词典添加到excel电子表格?

Python 如何将复杂的词典添加到excel电子表格?,python,python-3.x,excel,dictionary,spreadsheet,Python,Python 3.x,Excel,Dictionary,Spreadsheet,我想在以后的日期将数据添加到电子表格中进行分析。我已经尝试了几种不同的方法来使用for循环,但它们总是出现简短或错误。我是python新手,但我正在尝试在构建过程中学习。我需要做的是使用字典“dict_items”并使用键将数据插入现有excel电子表格。但是,如果我逐项进行,则对于某些列,每行只能获得一项,而对于其他列,则会获得更多项。这是因为某些键中的数据比其他键中的数据多。我需要的是,只有一个项的键的数据集要复制所有其他行的一个项,直到复制包含最多项的键的最后一个项为止。我在下面给出了一个

我想在以后的日期将数据添加到电子表格中进行分析。我已经尝试了几种不同的方法来使用for循环,但它们总是出现简短或错误。我是python新手,但我正在尝试在构建过程中学习。我需要做的是使用字典“dict_items”并使用键将数据插入现有excel电子表格。但是,如果我逐项进行,则对于某些列,每行只能获得一项,而对于其他列,则会获得更多项。这是因为某些键中的数据比其他键中的数据多。我需要的是,只有一个项的键的数据集要复制所有其他行的一个项,直到复制包含最多项的键的最后一个项为止。我在下面给出了一个示例输出,如果这有助于理解我正在尝试做的事情

例如,这是字典和我尝试过的For循环之一:

dict_items = {'most items':['1','2','3','4','5'], 'some items':['item1','item2','item3','item4','item5'], 'one item': 'banana'}

import xlsxwriter

workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()


row = 0
col = 0

dict_items = {'most items':['1','2','3','4','5'], 'some items':['item','item','item','item','item'], 'one item': 'banana'}

for key in d.keys():
    row += 1
    worksheet.write(row, col, key)
    for item in d[key]:
        worksheet.write(row, col + 1, item)
        row += 1
这可以将数据添加到电子表格中,但不能确保数据沿每行均匀分布

如果数据输入正确,电子表格应如下所示:

| most items | some items | one item |
|     1      |     item1  |  banana  |
|     2      |     item2  |  banana  |
|     3      |     item3  |  banana  |
|     4      |     item4  |  banana  |
|     5      |     item5  |  banana  |

希望输出示例能让您更好地了解我要做的事情。

最好的解决方案是通过安装pandas(
pip install pandas
)将字典转换为pandas.DataFrame

输出

否则

import xlsxwriter

workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0


dict_items = {'most items':['1','2','3','4','5'], 'some items':['item','item','item','item','item'], 'one item': 'banana'}

for key in list(dict_items.keys())[0:3]:
    worksheet.write(row, col, key)
    #print(str(row) + " " + str(col) + " "+ str(key))
    for item in dict_items[key]:
        row += 1
        if key == 'most items':
            #print(str(row) + " " + str(col) + " "+ str(key))
            worksheet.write(row, col, item)
            #print(item)
        if key == "some items":
            worksheet.write(row, col, item+str(row))
        if key == "one item":        
            if row <= len(dict_items.get("most items")):
                worksheet.write(row, col, dict_items[key])
                #print(dict_items[key])
    col +=1
    row = 0

workbook.close()
导入xlsxwriter
工作簿=xlsxwriter.workbook('data.xlsx')
工作表=工作簿。添加工作表()
行=0
col=0
dict_items={'most items':['1','2','3','4','5','some items':['item','item','item','item','item'],'one item':'banana'}
对于输入列表(dict_items.keys())[0:3]:
工作表。写入(行、列、键)
#打印(str(行)+“”+str(列)+“”+str(键))
对于dict_items[键]中的项目:
行+=1
如果键==“大多数项目”:
#打印(str(行)+“”+str(列)+“”+str(键))
工作表。写入(行、列、项)
#打印(项目)
如果键==“某些项目”:
工作表。写入(行、列、项+行)
如果键==“一项”:

如果这能回答你的问题吗?这对我想做的事情非常有效。我遇到的唯一问题是,对于数据集,我确实有一列只需要在第一行中打印一次。我有数百组数据,每一组数据都在自己的字典中,如示例所示。大多数条目都可以复制,这就给了我所需的结果,但是每个集合中有一个键,我只想在每个字典中打印一次。我还没有尝试过,但我相信您给出的第二个示例将使我更接近我所寻找的结果,因为代码使用键本身在excel中创建标题。Hi@JxnDistro在尝试代码后,如果您有问题,请告诉我。dataframe解决方案运行得非常好。我想我可以通过为“most items”列添加一个计数器,并在最后一次将“”添加到只有一项的列之前为每一行添加一个计数器来解决我的问题。然后,这将打印数据集最后一行上的单个项目,并在下一个数据集再次以“”开头。我还在写逻辑书,但这是我的计划。
import xlsxwriter

workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0


dict_items = {'most items':['1','2','3','4','5'], 'some items':['item','item','item','item','item'], 'one item': 'banana'}

for key in list(dict_items.keys())[0:3]:
    worksheet.write(row, col, key)
    #print(str(row) + " " + str(col) + " "+ str(key))
    for item in dict_items[key]:
        row += 1
        if key == 'most items':
            #print(str(row) + " " + str(col) + " "+ str(key))
            worksheet.write(row, col, item)
            #print(item)
        if key == "some items":
            worksheet.write(row, col, item+str(row))
        if key == "one item":        
            if row <= len(dict_items.get("most items")):
                worksheet.write(row, col, dict_items[key])
                #print(dict_items[key])
    col +=1
    row = 0

workbook.close()