如何在Python中使用N行的csv文件创建嵌套字典

我正在寻找一种方法来读取具有未知列数的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.

上一篇:javascript – 如何使用嵌套指令保留范围?


下一篇:c# – 嵌套泛型集合:如何实现从项到容器的引用?