0

如何以预定义的顺序从字典中获取数据。

例如在下面的字典中,如果有更动态的方法,我如何先获取 join1 值,然后再获取 join2 等等,以便我可以遍历整个字典并一个接一个地获取值而无需硬编码任何东西?

jDict = dict(join1 = dict(jtable='ABC', alias='REF', joinSelColumns=['A'],
                             joinCond=['B', 'C', 'D'],
                             joinGroupClause=['B', 'C', 'D'],
                             joinOrderClause=[('B', 'DESC'), ('C'), ('D')]),
                join2 = dict(jtable='XYZ', alias = 'NET', joinSelColumns=['S'],
                             joinCond=['T'],
                             joinGroupClause=['M', 'N'],
                             joinOrderClause=[('M', 'DESC'), ('N')]))
4

1 回答 1

2

您可以对键进行排序:

for sortedkey in sorted(jDict):
    # first join1, then join2

否则,字典没有固定的顺序。

你可以改用collections.OrderedDict();它以插入顺序维护项目;如果join1在此之前插入,join2则在遍历字典时它也会首先列出。

如果您所拥有的只是其他相同的项目,只是顺序不同(所以只是 join1,join2等),您也可以只使用列表。即使您有不同类型的项目,您也可以按类型对这些项目进行分组jDict['joins'] = [join1, join2, etc.].

于 2013-10-07T20:43:24.927 回答