python - 使用 Python 将 CSV 列分解为单独的数据结构的最优雅方法?

标签 python data-structures csv

我正在尝试学习 Python。作为学习过程的一部分,我正在将我用 Java 编写的项目移植到 Python。我现在所在的部分有一个 CSV 标题列表,格式如下:

headers = [a, b, c, d, e, .....]

和单独的组列表,这些标题应该被分解成,例如:

headers_for_list_a = [b, c, e, ...]
headers_for_list_b = [a, d, k, ...]
. . .

我想获取 CSV 数据并将其转换为基于这些组的字典,例如:

list_a = [
          {b:val_1b, c:val_1c, e:val_1e, ... },
          {b:val_2b, c:val_2c, e:val_2e, ... },
          {b:val_3b, c:val_3c, e:val_3e, ... },
          . . . 
         ]

例如,val_1b 是“b”列的第一行,val_3c 是“c”列的第三行,等等。

我的第一个“Java 直觉”是做类似的事情:

for row in data:
    for col_num, val in enumerate(row):
        col_name = headers[col_num]
        if col_name in group_a:
            dict_a[col_name] = val
        elif headers[col_cum] in group_b:
            dict_b[col_name] = val
        ...
    list_a.append(dict_a)
    list_b.append(dict_b)
    ...     

但是,这种方法似乎效率低下/笨拙,并且不具备 Python 程序员经常谈论的优雅。有没有一种我应该尝试的更“禅宗”的方式 - 与 Python 的哲学保持一致?

最佳答案

试试 Python 的 CSV 模块,尤其是 DictReader 类。

关于python - 使用 Python 将 CSV 列分解为单独的数据结构的最优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768912/

相关文章:

python - Numpy 基于时间的矢量操作,其中前面元素的状态很重要 - for 循环是否合适?

c++ - 如何使用 C++ 为我的容器 Deque 设置最大大小?

c# - 解析大文本文件,即时修改

algorithm - 如何有效地找到数字属于哪个范围?

r - 为什么R的关联数组被称为列表而不是映射/字典

python - 为什么一个简单的 CSV 清理 python 脚本可以工作,而另一个却不能?

php - 清除表中的所有数据,但保留列/结构

python - 无法在命令行 sqlcipher 工具中打开 pysqlcipher 加密的字典

python - 如何使用 bs4 在 python 中抓取单页应用程序网站

python - lambda 参数解包错误