制作没有导入的csv文件的字典

时间:2016-11-29 05:47:22

标签: python csv dictionary

所以我有一个任意数量的列和行的csv文件(完全矩形,所以没有丢失的单元格),我想把它变成字典。

key1   key2   key3
1      2      3
4      5      6
7      8      9

我希望有一个遵循这种模式的字典

{key1:[1,4,7], key2:[2,5,8], key3:[3,6,9]}

我现在正在做的是阅读每一行。如果我正在读取第一行,则每个元素都会成为字典中的一个键并映射到一个空列表。然后我继续阅读每一行,但这里是我遇到问题的地方。我不知道如何将每行的元素分配给它的正确键(因为字典是随机的),这假设我知道如何生成一个我可以在一开始就正确分配的值列表(例如,如何我可以让1转到key1,2转到key2和3转到key3)。

我想在没有进口的情况下完成这一切。让我知道你们的想法。

1 个答案:

答案 0 :(得分:0)

>>> s = '''key1   key2   key3
1      2      3
4      5      6
7      8      9
'''.splitlines()

>>> fields = s[0].split()
>>> rows = [[int(x) for x in line.split()] for line in s[1:]]
>>> print(dict(zip(fields, zip(*rows))))
{'key1': (1, 4, 7), 'key2': (2, 5, 8), 'key3': (3, 6, 9)}
  • s[0]是第一行标题。
  • .split()将字词分为字段名称
  • s[1:]获取标题行
  • 之后的行
  • line.split()将行拆分为字段值
  • int(x)将字符串条目“1”转换为数字 1
  • zip(*rows)转置行列表
  • zip(fields, transposed_rows)列出了键/值对
  • dict(list_of_pairs)制作字典

参见参考资料: