所以我有一个任意数量的列和行的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)。
我想在没有进口的情况下完成这一切。让我知道你们的想法。
答案 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)
制作字典参见参考资料: