簡體   English   中英

循環遍歷 Python 中的字典或列表

[英]Looping through dictionary or list in Python

我定義了這本字典 object。 我已經通過 go 將一個循環放在一起並打印出 KEY / VALUE 對。

當代碼循環通過“file1_info”部分時,我可以正常訪問這些項目。 但是,當它到達“索引”部分時,我無法到達任何地方。

有趣的是,如果“索引”部分下只有 1 項,則代碼將起作用。 但不止一個,我得到一個錯誤。

關於如何做到這一點的任何建議?

    DATA_INFO = {'file1_info': {
               'filename'   : 'Datafile1_' + str(yyyy),
               'file_ext'   : 'xls',
               'active'     : 'Y',
               'calc_idx'   : '1,4',
               'inc_columns': '1,2,11',
               'indexes':
                 [{'name': 'ZAXDR',   'active': 'N', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'},
                 {'name': 'ZAXLP',   'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'},
                 {'name': 'ZAXERNL', 'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'},
                 {'name': 'ZAXERNS', 'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'}]
              },
             'file2_info': {
               'filename'   : 'Datafile2_' + str(yyyy),
               'file_ext'   : 'xls',
               'active'     : 'Y',
               'calc_idx'   : '1,4',
               'inc_columns': '1,2,11',
               'indexes':
                 {'name': 'ZAX', 'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'}
              }
            }



  for v_key, v_label in DATA_INFO.items():
    v_filename    = NYSE_INFO[v_key]['filename']
    v_file_ext    = NYSE_INFO[v_key]['file_ext']
    v_active      = NYSE_INFO[v_key]['active']
    v_calc_idx    = NYSE_INFO[v_key]['calc_idx']
    v_inc_columns = NYSE_INFO[v_key]['inc_columns']
    v_indexes     = NYSE_INFO[v_key]['indexes']

   /*** This part is not traversing the "indexes" section ***/

    for k, v in DATA_INFO[v_key]['indexes'].items():
      print("KEY: ", k)
      print("VAL: ", v)

提前謝謝了。

好吧,您可以使用以下循環對其進行迭代的任何方式都存在語法錯誤。

for OuterKey, OuterValue in DATA_INFO.items():

    if (isinstance(OuterValue, dict)):
        print("Key :"+ OuterKey)

        for InnerKey, InnerValue in OuterValue.items():
            if isinstance(InnerValue, list):
                print("\t"+InnerKey+ " -> ")
                for eachEle in InnerValue:
                    print(eachEle)
            else:
                print("\t"+InnerKey+ " -> " +OuterValue.get(InnerKey))
    else:        
        pass

您可以進一步增強以獲得更好的結果我剛剛迭代了結構。

注意:我已經更新了結構,如下所示。

DATA_INFO = {'file1_info': {
               'filename'   : 'Datafile1_' + str(yyyy),
               'file_ext'   : 'xls',
               'active'     : 'Y',
               'calc_idx'   : '1,4',
               'inc_columns': '1,2,11',
               'indexes':
                 [{'name': 'ZAXDR',   'active': 'N', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'},
                 {'name': 'ZAXLP',   'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'},
                 {'name': 'ZAXERNL', 'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'},
                 {'name': 'ZAXERNS', 'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'}]
              },
             'file2_info': {
               'filename'   : 'Datafile2_' + str(yyyy),
               'file_ext'   : 'xls',
               'active'     : 'Y',
               'calc_idx'   : '1,4',
               'inc_columns': '1,2,11',
               'indexes':[
                 {'name': 'ZAX', 'active': 'Y', 'idx_type': 'domestic', 'data_row': 9, 'multi_benchmark': 'N'}]
              }
            }

'indexes' -> 鍵值更新為列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM