【问题标题】:How to store a full column from a csv as a dictionary value?如何将 csv 中的完整列存储为字典值?
【发布时间】:2022-01-11 04:56:14
【问题描述】:

我想将 csv 的一列或多列(不带分隔符、标题和索引)存储为字典中的值。

例子:

csv: 
numbers
17
28
93 
14
5

dictionary:
"foo":  {
             17
             28
             93 
             14
             5
         }

有没有办法做到这一点?

【问题讨论】:

  • 是的。 在寻求帮助之前自己尝试和研究了什么?

标签: python csv dictionary


【解决方案1】:

我会为此使用 pandas,但这可能有点矫枉过正。

import pandas as pd
dictionary = pd.read_csv('/tmp/t.csv').to_dict()
dictionary

{'numbers': {0: 17, 1: 28, 2: 93, 3: 14, 4: 5}}

【讨论】:

    【解决方案2】:

    只需读取您的 csv 文件,在 '\n' 上拆分,然后(假设第一行是您不想要的单词“数字”)将其存储在字典中:

    with open('your_csv_file.csv', 'r') as f:
        d = {'foo': f.read().split('\n')[1:]}
    

    如果有多个列(假设列是逗号分隔的):

    with open('your_csv_file.csv', 'r') as f:
        lst = f.read().split('\n')
    dct = {k:[] for k in lst[0].split(',')}
    for l in lst[1:]:
        for k,x in zip(dct, l.split(',')):
            dct[k].append(x)
    

    【讨论】:

    • 如果 csv 有多个列怎么办?这实际上只是逐行读取,这不是典型的 csv。
    • @FredrikErlandsson 确实如此。我刚刚离开了 OP 的例子。
    • 记得关闭文件句柄。
    • @S3DEV 好点。谢谢。
    猜你喜欢
    • 2015-10-08
    • 2019-07-14
    • 2022-11-02
    • 2018-04-13
    • 2014-09-02
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多