我想知道嵌套dicts的优点/缺点是什么,而不是在Python中散列元组?
上下文是一个小型脚本,用于在会议中为与会者分配"研讨会".
每个研讨会都有几个属性(例如周,日,科目等).我们使用这些属性中的四个来为每个与会者分配研讨会 - 即每个代表也将有一周/天/主题等.
目前,我正在使用嵌套字典存储我的研讨会:
workshops = defaultdict(lambda: defaultdict(lambda:defaultdict(lambda:defaultdict(dict))))
with open(input_filename) as input_file:
workshop_reader = csv.DictReader(input_file, dialect='excel')
for row in workshop_reader:
workshops[row['Week ']][row['Stream']][row['Strand']][row['Day']] = row
return workshops
Run Code Online (Sandbox Code Playgroud)
然后,我可以使用上述数据结构为每个与会者分配他们的工作室.
问题是稍后,我需要遍历每个研讨会,并分配一个ID(此ID存储在不同的系统中),这需要逐层展开结构.
第一个问题 - 是否有其他方法使用字符串(工作室名称)作为键来创建相同值的二级索引?即我仍然有四级嵌套dicts,但我也可以根据名称搜索单个条目.
其次 - 如何使用元组作为键来实现类似的效果?您可以考虑使用这种方法有什么优势吗?它会更清洁,更容易使用吗?(这整个解开这有点痛苦,我不认为它非常平易近人).
或者您是否可以推荐其他可能更优/更容易访问/操作的数据结构?
谢谢,维克多
class Workshop(object):
def __init__(self, week, stream, strand, day, name):
self.week = week
self.stream = stream
self.day = day
self.strand = strand
self.name = name
...
for row in workshop_reader:
workshops['name'] = Workshop(...)
Run Code Online (Sandbox Code Playgroud)
只有当名称是研讨会的独特属性时(也就是说,没有重复名称的研讨会).
此外,您还可以轻松地为研讨会词典中的每个Workshop对象分配ID.