繁体   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