Python - 嵌套字典,与散列元组?

标签 python dictionary

我想知道嵌套字典与在 Python 中散列元组的优缺点是什么?

上下文是一个小脚本,用于将“研讨会”分配给 session 的与会者。

每个研讨会都有几个属性(例如周、日、​​主题等)。我们使用这些属性中的四个来为每个与会者分配研讨会 - 即每个代表也将有一个星期/天/主题等。

目前,我正在使用嵌套字典来存储我的工作室:

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

然后我可以使用上面的数据结构为每个与会者分配他们的研讨会。

后面的问题,我需要遍历每一个workshop,分配一个ID(这个ID存放在不同的系统中),需要一层一层的展开结构。

第一个问题 - 是否有其他方法可以使用字符串(车间名称)作为键来创建相同值的二级索引? IE。我仍然有四层嵌套的字典,但我也可以仅根据名称搜索单个条目。

其次 - 如何使用元组作为键来实现类似的效果?您认为使用这种方法有什么优势吗?它会更清洁或更易于使用吗? (整个展开这个有点痛苦,我认为这不是很容易理解)。

或者您是否可以推荐任何其他数据结构,这些数据结构可能更好/更容易访问/操作?

谢谢, 维克多

最佳答案

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(...)

这只是如果名称是车间的唯一属性(即没有重复名称的车间)。
此外,您还可以轻松地为研讨会字典中的每个研讨会对象分配一个 ID。

关于Python - 嵌套字典,与散列元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4644071/

相关文章:

python - 用循环更新字典

dataframe - 如何向 DataFrame 添加空 map 类型列?

python - 迭代 python 字典的键,当键是整数时,我得到这个错误, "TypeError: argument of type ' int' 不可迭代”

python - 错误在 `python' : free(): invalid pointer: 0x00007fc3c90dc98e

python - 在 Windows 上激活 Python 虚拟环境

python - 扭曲的位置标题重定向

python - 从嵌入一个字典的两个字典中提取数据并合并数据

json - 在 Vim 中漂亮地打印任意嵌套的字典和列表

python - Django 刷新 token 轮换和用户页面刷新

python - 读取 Pandas 中的 CSV 文件,中间有空行