gpt4 book ai didi

Python 帮助 : Creating a dict of {str:list of str} from csv file

转载 作者:行者123 更新时间:2023-11-28 22:52:38 24 4
gpt4 key购买 nike

我必须按照以下格式创建一个表:{str: list of str}

使用以下代码打开 .csv 文件,我得到:

import csv
cr = csv.reader(open("name.csv","r"))
for row in cr:
print(row)

输出:

['key1', 'key2', 'key3']
['value1', 'value2', 'value3']
['value4', 'value5', 'value6']

我基本上需要将其组织成格式

{'key1': ['value1', 'value4'], 'key2': ['value2', 'value5'], 'key3': ['value3', 'value6']}

我卡住了;我只是想不出一种方法来让它适用于任意数量的键和值

最佳答案

使用 zip() 将行变成列,然后将它们变成字典键和值:

import csv

with open("name.csv", newline='') as infh:
cr = csv.reader(infh)
columns = {r[0]: list(r[1:]) for r in zip(*cr)}

最后一行的快速演示:

>>> cr = [
... ['key1', 'key2', 'key3'],
... ['value1', 'value2', 'value3'],
... ['value4', 'value5', 'value6'],
... ]
>>> {r[0]: list(r[1:]) for r in zip(*cr)}
{'key3': ['value3', 'value6'], 'key2': ['value2', 'value5'], 'key1': ['value1', 'value4']}

其中 cr 代表 csv.reader() 对象。

zip(*iterable) 获取可迭代对象中的所有元素并将其转换为矩阵;列变成行,因为每个嵌套值都与同一位置其他行的值配对:

>>> zip(*[[1, 2, 3], [4, 5, 6]])
[(1, 4), (2, 5), (3, 6)]

和字典理解 {key_expression: value_expression for targets in iterable} 生成一个字典,其中在上面的代码中,列中的每个第一个元素成为键,其余元素形成值。

关于Python 帮助 : Creating a dict of {str:list of str} from csv file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com