动态地从Python字典中获取数据?

时间:2013-10-07 20:41:55

标签: python dictionary

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

例如,在下面的字典中,如果有更多的动态,我如何首先获取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')]))

1 个答案:

答案 0 :(得分:2)

您可以对键进行排序:

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

否则,词典没有固定顺序。

您可以使用collections.OrderedDict()代替;它按照插入顺序维护项目;如果在join1之前插入join2,则在迭代字典时也会首先列出它。

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