2011-10-08 62 views
3

如果密钥不存在于字典中,则默认情况下在字典上调用get(key)将返回None。什么是列表的惯用等价物,例如,如果列表的大小至少为传入索引的大小,则返回该元素,否则返回None?什么是列表get()的常用python等价物?

要改写,这是什么功能的更地道/紧凑型:

def get(l, i): 
    if i < len(l): 
     return l[i] 
    else: 
     return None 
+1

在大多数情况下,我使用'defaultdict'而不是'dict.get()',如果这更符合您的用例,您也可以使用'defaultlist'。 –

+2

你为什么认为你需要这个?索引列表通常不是我们推测的。换言之;列表通常以这样的方式使用,即我们对每个元素应用一个动作;而不是一个杰出的元素(如果它存在的话)。看起来很可能你正在使用一个不寻常的列表(可能一个班会更好?) – SingleNegationElimination

回答

3

如果你希望l[i]经常不存在,那么使用:

def get(l,i): 
    return l[i] if i<len(l) else None 

如果你希望l[i]几乎总是存在的,然后使用try...except

def get(l,i): 
    try: 
     return l[i] 
    except IndexError: 
     return None 

理由:try...except在引发异常时非常昂贵,否则相当快。

+1

'如果我 JBernardo