【发布时间】:2020-01-24 14:46:52
【问题描述】:
我正在寻找理解来阅读 csv 并创建一个字典,其中键是字符串,值是列表
csv 看起来像
fruit,Apple
vegetable,Onion
fruit,Banana
fruit,Mango
vegetable,Potato
我的输出应该是这样的
{'fruit':['Apple','Banana','Mango'],'vegetable':['Onion','Potato']}
我正在寻找字典理解来做到这一点,我试过了
def readCsv(filename):
with open(filename) as csvfile:
readCSV = csv.reader(csvfile, delimiter='\t')
dicttest={row[1]:[].append(row[2]) for row in readCSV}
return dicttest
【问题讨论】:
-
请注意,您的分隔符与您的示例不匹配。您的示例数据有逗号,但您在 CSV 阅读器中使用标签。另外请注意,您的示例文件有两列将被 0 和 1 索引。在您的代码中,您是 1 和 2 的索引。
-
还要注意@elomat 的有效答案中使用了简单的 for 循环。这是这里最明显的方法。字典理解是不合适的。 (它可以用于对整个输入进行排序并使用带有 lambda 函数的
itertools.groupby,但与发布的解决方案相比,它的内存效率较低且性能可能较低。) -
感谢性能部分的建议,字典理解思路我省略了
标签: python-3.x dictionary dictionary-comprehension