如何以预定义的顺序从字典中获取数据。
例如,在下面的字典中,如果有更多的动态,我如何首先获取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')]))
答案 0 :(得分:2)
您可以对键进行排序:
for sortedkey in sorted(jDict):
# first join1, then join2
否则,词典没有固定顺序。
您可以使用collections.OrderedDict()
代替;它按照插入顺序维护项目;如果在join1
之前插入join2
,则在迭代字典时也会首先列出它。
如果你所拥有的只是其他相同的项目,只是顺序不同(所以只是 join1
,join2
等)你也可以只使用一个列表来代替。即使您有不同类型的项目,您也可以按类型分组这些项目; jDict['joins'] = [join1, join2, etc.]
。