我使用的是两个层次结构的数据集,它们包含一个复杂的关系(我没有使用SQL),它们不共享它们的主要查找键。我们使用这个过程来保持两个数据集的同步。在
每个数据集当前存储为一个字典,数据集的键作为字典的键。在确定了复杂关系之后,我将另一个数据集的键作为另一个数据集的属性存储在另一个数据集中。这就需要创建一些奇怪的helper函数来遵循一些父子关系。在
我想知道是否有一种更有效或更快的方法来处理这种疯狂行为,因为我目前必须将这两个数据集传递给需要解析关系的处理函数。在
示例:
leftdataset = {'10000': { 'key': '10000', 'fkey':'asdf', 'parent':'10001'},
'10001': { 'key': '10001', 'fkey':'qwer', 'parent':''},}
rightdataset= {'asdf': { 'key': 'asdf', 'fkey':'10000', 'parent':'qwer'},
'qwer': { 'key': 'qwer', 'fkey':'10001', 'parent':''},
为了找到父对象的fkey
,我需要:
我在考虑如何呈现一个密钥对的元组,然后在其中寻找我需要的密钥,例如:
keys = [('10000', 'asdf'), ('10001', 'qwer')]
def find_key(key, keyset):
for keypair in keys:
if key in keypair:
k1, k2 = keypair
if k1 == key:
return k2
else:
return k1
但这听起来比我现在做的更没有效率。我是不是走错了路?在
这种用法对你有吸引力吗?在
轻松查找和使用单个条目:
方便查找家长:
^{pr2}$轻松查找相关条目:
特别是在您的问题中有一个例子:父项的外键:
如果是这样的话,这就是密码!课程:
以及您提供的数据的用途:
说明:将每个dict值包装在一个}。为了使
Entry
类中,并定义__getitem__
,使其可用作dict(或多或少)。拥有一个将主键映射到这些Entry
的Dataset
类。提供对此数据集的Entry
访问,并提供方便的方法.parent()
和{.related()
工作,设置“相关”的数据集应该与set_related_dataset
在一起,并将其连接在一起。在现在,您甚至可以只传递
Entry
s,这样就可以访问相关条目,而不需要同时传入两个数据集。在根据Mark Ransom的评论,也许你可以组织一个这样的课堂:
并使用单个查找方法:
^{pr2}$相关问题 更多 >
编程相关推荐