我正在寻找一种方法来读取具有未知列数的csv文件到嵌套字典中.即输入表格
file.csv:
1, 2, 3, 4
1, 6, 7, 8
9, 10, 11, 12
我想要一个表格的字典:
{1:{2:{3:4}, 6:{7:8}}, 9:{10:{11:12}}}
这是为了允许O(1)搜索csv文件中的值.
创建字典可能需要相当长的时间,因为在我的应用程序中我只创建一次,但搜索它数百万次.
我还想要一个选项来命名相关列,以便我可以忽略不必要的一次
解决方法:
这是一个简单但虽然脆弱的方法:
>>> d = {}
>>> with io.StringIO(s) as f: # fake a file
... reader = csv.reader(f)
... for row in reader:
... nested = d
... for val in map(int, row[:-2]):
... nested = nested.setdefault(val, {})
... k, v = map(int, row[-2:]) # this will fail if you don't have enough columns
... nested[k] = v
...
>>> d
{1: {2: {3: 4}, 6: {7: 8}}, 9: {10: {11: 12}}}
但是,这假设列数至少为2.