【问题标题】:How can I write a dictionary to a csv file?如何将字典写入 csv 文件?
【发布时间】:2019-05-19 07:51:18
【问题描述】:

字典如下所示。

res = {'Qatar': ['68.61994212', '59.03245947', '55.10905996'],
'Burundi': ['0.051012487', '0.048311391', '0.046681908'],
'Japan': ['9.605144835', '9.247590692', '9.542878595', ]}

我想删除 csv 文件中的 ' [ ]

我想得到输出 csv,

卡塔尔 68.61994212 59.03245947 55.10905996

布隆迪 0.051012487 0.048311391 0.046681908

日本 9.605144835 9.247590692 9.542878595

【问题讨论】:

标签: python dictionary


【解决方案1】:

试试下面的代码。您得到 '[]' 的原因是因为您可能正在尝试按原样编写字典的 val,它是一个列表。相反,您需要检索列表中的值,然后将其写入。

import csv

res = {'Qatar': ['68.61994212', '59.03245947', '55.10905996'],
'Burundi': ['0.051012487', '0.048311391', '0.046681908'],
'Japan': ['9.605144835', '9.247590692', '9.542878595', ]}

with open('./result.csv', 'w') as res_file:
    csv_writer = csv.writer(res_file)
    for k, v in res.items():
        res_val = [x for x in v]
        res_val.insert(0, k)
        csv_writer.writerow(res_val)

输出

文件(result.csv)的内容如下:

Burundi,0.051012487,0.048311391,0.046681908
Japan,9.605144835,9.247590692,9.542878595
Qatar,68.61994212,59.03245947,55.10905996

【讨论】:

  • @DIG 那么将此答案标记为正确答案是有意义的。
【解决方案2】:

除了Jay-s 回答如果你被允许使用Pandas 那么你可以使用panda-s to_csv 函数将csv 放在一行中。

import pandas as pd

df = pd.DataFrame(res)
df.to_csv('my_result.csv', index=False)

【讨论】:

    【解决方案3】:

    试试这个: [(k,) + tuple(res[k]) for k in res]

    你会得到这样的元组列表,你可以将其写入 csv 文件:

    [('Burundi', '0.051012487', '0.048311391', '0.046681908'), ('Japan', '9.605144835', '9.247590692', '9.542878595'), ('Qatar', '68.61994212', '59.03245947', '55.10905996')]

    【讨论】:

      【解决方案4】:

      熊猫会这样做:

      import pandas as pd
      
      res = {'Qatar': ['68.61994212', '59.03245947', '55.10905996'],
             'Burundi': ['0.051012487', '0.048311391', '0.046681908'],
             'Japan': ['9.605144835', '9.247590692', '9.542878595', ]}
      
      df = pd.DataFrame.from_dict(res, orient='index')
      df.to_csv('res.csv', header=False)
      

      创建数据框时务必使用“orient='index'”,以便在 csv 中获得正确的行索引

      Qatar,68.61994212,59.03245947,55.10905996
      Burundi,0.051012487,0.048311391,0.046681908
      Japan,9.605144835,9.247590692,9.542878595
      

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 2016-10-26
        • 2020-06-11
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 2014-06-30
        • 2017-03-28
        相关资源
        最近更新 更多