【问题标题】:How to write a nested python dict to csv with row being key, value, key, value如何将嵌套的python dict写入csv,其中行是键,值,键,值
【发布时间】:2022-01-10 08:50:05
【问题描述】:

我有一个嵌套的字典,看起来像:

{KeyA: {'ItemA': 1, 'ItemB': 2, 'ItemC': 3, 'ItemD': 4, 'ItemE': 5, 'ItemF': 6},
{KeyB: {'ItemR': 2, 'ItemQ': 3, 'ItemG': 4, 'ItemZ': 5, 'ItemX': 6, 'ItemY': 7}

我想将此输出到所需行格式为的 csv:

项目A,1,项目B,2,项目C,3,项目D,4,项目E,5,项目F,6

我已经设法得到一行是键,然后在它下面的另一行与下面的代码相关联的值:

for item in myDict:
    item = myDict[x]
    itemVals = item.values()
    wr.writerow(item)
    wr.writerow(itemVals)
    x += 1

我尝试了多种重新格式化此文件的方法,但每次尝试都会遇到可下标的错误。

顶级字典的长度可能很大,最多 30k 嵌套字典。目前,嵌套的 dicts 是 6 个 key:value 对的恒定长度。

实现此目的的干净方法是什么?

【问题讨论】:

  • 您希望 KeyA[ItemA] 在 CSV 中位于 KeyB[ItemR] 上方的一行,还是只想为 KeyA 打印 csv 行?如果您可以使所需的输出更清晰一点,那就太酷了:)

标签: python csv dictionary


【解决方案1】:

这是一个带有循环的实现:

myDict = {'KeyA': {'ItemA': 1, 'ItemB': 2, 'ItemC': 3, 'ItemD': 4, 'ItemE': 5, 'ItemF': 6},
'KeyB': {'ItemR': 2, 'ItemQ': 3, 'ItemG': 4, 'ItemZ': 5, 'ItemX': 6, 'ItemY': 7}}

with open("output.csv", "w") as file:
    for key in myDict:
        for nestedKey in myDict[key]:
            file.write(key + "," + str(myDict[key][nestedKey]) + ",")
        file.write("\n")

输出.csv:

KeyA,1,KeyA,2,KeyA,3,KeyA,4,KeyA,5,KeyA,6,
KeyB,2,KeyB,3,KeyB,4,KeyB,5,KeyB,6,KeyB,7,

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 2020-07-22
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2014-04-01
    • 2020-10-08
    相关资源
    最近更新 更多