提问者:小点点

用列表作为值更改格式字典


我有一个字典,其中包含列表值,我想将其导出到excel文件中。

我的字典当前看起来是这样的:

{1: [0, 120, 115, 100, 91, 131, 74, 14, 8, 105, 122, 47, 103, 0], 2: [0, 107, 25, 26, 121, 118], .. } 

我想用以下格式将其导出到excel文件:应该有两列,一列带有键,另一列带有具有该键的列表中的值。 因此对于每个列表项,您应该知道它属于哪个键。 例如,第一列是一堆1,第二列是0,120,115,100,等等。

我想我也许应该把这本字典转过来,但这似乎很难,因为清单太多了。 我还想把它转换成一个pandas数据框架,然后我可以导出到Excel。 如何快速更改字典的格式?

如果我是正确的,我需要的字典应该是这样的:

{1:0, 1:120, 1:115, 1:100, 1:91, 1:131, 1:74, 1:14, 1:8, 1:105, 1:122, 1:47, 1:103, 1:0, 2:0, 2:107..}

共3个答案

匿名用户

您应该首先从字典中构建一个键值元组列表,然后使用pandas将其转换为Excel。

d = {1: [0, 120, 115, 100, 91, 131, 74, 14, 8, 105, 122, 47, 103, 0], 2: [0, 107, 25, 26, 121, 118] } 

data = [(i, j) for i in d.keys() for j in d[i]]

# Export to excel format
df = pd.DataFrame(data, columns=["A", "B"])
df.to_excel("table.xlsx")

匿名用户

如果你不想养熊猫,这也是可能的

data = {1: [0, 120, 115, 100, 91, 131, 74, 14, 8, 105, 122, 47, 103, 0], 2: [0, 107, 25, 26, 121, 118]}

new_container = []
for key, value in data.items():
    for i in value:
        new_container.append([key, i])

print(new_container)

打印:

[[1, 0], [1, 120], [1, 115], [1, 100], [1, 91], [1, 131], [1, 74], [1, 14], [1, 8], [1, 105], [1, 122], [1, 47], [1, 103], [1, 0], [2, 0], [2, 107], [2, 25], [2, 26], [2, 121], [2, 118]]

不是很好,但与我们的需求相似

匿名用户

您可以使用pandas创建包含两列(键和值)的数据框架,并将其保存到excel文件中

import pandas as pd

dct = {1: [0, 120, 115, 100, 91, 131, 74, 14, 8, 105, 122, 47, 103, 0], 
       2: [0, 107, 25, 26, 121, 118]}

# define the second column name as "values"
df = pd.DataFrame({'values': dct}).reset_index() 
# rename the first colum, here "keys"
df.rename(columns={"index": "keys"}, inplace = True)
# save dataframe to excel file
df.to_excel("output.xlsx")