函数调用循环python内部

时间:2014-06-06 11:21:26

标签: python loops dictionary list-comprehension

我确实有以下问题 -

dict1 = {'abc': {'x': 2, 'y': 3, 'z': 4}, 'mno': {'p': 3, 'q':4, 'r':5}} 

def refine():
    def calc(a_dict):
        if some_condition :
           return x ={'a':1}
        else:
           return None

    for k, v in dict1:
        return calc(v)

现在,当我在{for循环中iterating调用此函数时,我得到Nonea。函数调用是这样的,我最多可以获得一个a

示例输出 -

None
None
{'a':1}
None

我希望calc函数返回None,以防循环后的所有值都给出Nonex,以防循环后的任何值给出x 1}}。如何实现这一目标?提前致谢。

修改 - 如果我将结果存储在列表中并想要检查列表是否包含None以外的其他内容并且if True将其返回,该怎么办?

2 个答案:

答案 0 :(得分:2)

如果我确实收到了问题,您可以将条件的结果存储在字典中,然后使用all量词函数进行检查:

def calc(a_dict):
    results = (some_condition(k,v) for k,v in a_dict.iteritems())
    if all(res == None for res in results):
        return None
    elif all(res == <something> for res in results):
        return {'a':1}
    else:
        return <something different>

答案 1 :(得分:0)

你可以使用any()。如果任何一个值为真,则检查条件。它返回x。如果所有值都失败则转到else

if any(somecondition):
    return x
else:
    return None