列表和词典的迭代器

时间:2012-03-16 11:56:01

标签: python iterator python-3.x

我有一个参数字典,包含由字符串,列表和其他字典组成的复杂数据。现在我想迭代这些数据。

我的问题是 - 最好的做法 - 有一个迭代器,它迭代列表和字典。

我有什么:

def parse_data(key, value):
    iterator = None

    if isinstance(value, dict):
        iterator = value.items()
    elif isinstance(value, list):
        iterator = enumerate(value)

    if iterator is not None:
        for key, item in iterator:
            parse_data(key, item)
        return

    # do some cool stuff with the rest

这看起来不太诡异。我想到了一个类似于iter的函数,它让我可以遍历key和item。

希望你能提供帮助。
非常感谢先进。

2 个答案:

答案 0 :(得分:0)

我认为这相当pythonic。我只想把它改成:

def parse_data:

    if isinstance(value, dict):
        iterator = value.items()
    elif isinstance(value, list):
        iterator = enumerate(value)
    else:
        return

    for key, item in iterator:
        parse_data(value, key, item)

    # do some cool stuff with the rest

答案 1 :(得分:0)

我不确定是否有更短的方法,但Python的构建是为了做一件事情。也许这可能是另一种方式。我没有对它进行测试,因此它可能无法正常工作。

def parse_data(key,value):
    iterator = isinstance(value,dict) 

    if iterator is False and isinstance(value,list):
        iterator = enumerate(value)

    if iterator is not None: 
        for key,item in iterator: 
            parse_data(key,item) 
        return      

    #do some cool stuff with the rest