【发布时间】:2015-07-01 15:10:32
【问题描述】:
我想在 python 中创建一个 perl 样式的多级字典,但是我正在努力实现它。
这是我尝试过的:
import sys
import csv
import pprint
from collections import defaultdict
hash = defaultdict(dict)
FILE = csv.reader(open('dosageMP.txt', 'rU'), delimiter='\t')
FILE.next()
count = 0
for row in FILE:
if count < 10:
print row
hash[row[0]][row[10]][row[5]] = 1
count = count+1
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(hash)
此代码似乎适用于两个级别 hash[row[0]][row[10]],但不适用于 3 或 4 个级别。
任何帮助将不胜感激,我是 python 新手,所以如果这是一个愚蠢的问题,我很抱歉。我可以在 perl 中做到这一点,但在 python 中却不行。
我想要的输出是:
Center->ROOM1->EXAM1
->EXAM2
ROOM2->EXAM1
->EXAM2
->EXAM3
Center2->ROOM3->EXAM1
【问题讨论】:
-
ROOM_X_列表或字典下使用的是什么数据结构?还有dosageMP.txt里面的数据结构是什么? -
逻辑应该是一样的,不管是 Perl 还是 Python。你用 Perl 模拟过它吗?
-
附带说明:您不应该使用这样的
count变量。请改用enumerate()。 docs.python.org/2/library/functions.html#enumerate -
这可能是您要求的吗? stackoverflow.com/q/5369723/4786219
标签: python perl dictionary hash