联想矩阵?

2024-10-03 04:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个项目中需要存储一个由两个字符串键索引的数字矩阵。矩阵不是交错的,也就是说,如果一个列键存在于任何一行,那么它应该存在于所有行。类似地,如果任何列都存在一个行键,那么它应该存在于所有列。在

表达这一点的明显方法是使用关联数组的关联数组,但这既笨拙又低效,而且它没有强制执行非锯齿属性。是否有任何流行的编程语言提供了一个关联矩阵,要么内置在语言中,要么作为其标准库的一部分?如果是这样的话,它们是如何工作的,无论是在API还是在实现级别?我在这个项目中使用Python和D,但是其他语言中的示例仍然有用,因为我可以查看API并找出在Python或D中实现类似功能的最佳方法


Tags: 项目方法字符串api语言属性矩阵数字
3条回答

在Python中,可以用两个字符串的元组为dict建立索引,例如

>>> d = {}
>>> d["foo","bar"] = 10
>>> d
{('foo', 'bar'): 10}

我不知道“enforce non jaggedness”对您意味着什么,但您可以使用defaultdict为未显式设置的条目返回默认值,或者使用已知值初始化dict:

^{pr2}$

如果您想强制只允许已知集合中的键,那么我建议将dict子类化以添加验证。在

为什么不使用一个标准的矩阵,然后有两个字典-一个将行键转换为行索引,另一个将列键转换为列索引。你可以自己做一个结构,我觉得这样很容易。只需创建一个包含矩阵和两个字典的类,然后从那里开始。在

python的larry模块最近发布了。我相信它能满足你的需要。在

相关问题 更多 >