0

定義済みの順序で辞書からデータを取得するにはどうすればよいですか。

たとえば、以下のディクショナリでは、最初に join1 の値を取得し、次に join2 などを取得して、ハードコーディングせずにディクショナリ全体を反復処理して値を 1 つずつ取得できるように、より動的に取得するにはどうすればよいでしょうか?

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、辞書を反復処理するときに最初にリストされます。

あなたが持っているすべてのアイテムが他の点では同じで、順序だけが異なる場合 (つまり join1join2など)、代わりにリストを使用することもできます。さまざまなタイプのアイテムがある場合でも、それらのアイテムをタイプ別にグループ化することもできます。jDict['joins'] = [join1, join2, etc.].

于 2013-10-07T20:43:24.927 に答える