从列表中测试值,从Python中的另一个替换

时间:2014-01-04 22:31:21

标签: python list

请问,测试一些简单变量X是否在列表(或元组)中是否是“最终的Python”方法,如果为True则从同一位置的另一个列表(或元组)返回值?字典服务会更好吗?

1 个答案:

答案 0 :(得分:4)

list.index()tuple.index()方法返回匹配值的第一个索引:

def mapped_value(somelist, someotherlist, value):
    try:
        index = somelist.index(value)
    except ValueError:
        return None
    return someotherlist[index]

如果ValueError不存在,则会引发value,此时会返回None

通过捕捉someotherlist,可以使其更加紧凑并防止缩短IndexError

def mapped_value(somelist, someotherlist, value):
    try:
        return someotherlist[somelist.index(value)]
    except (ValueError, IndexError):
        return None

但是,将值映射到其他值的字典会更方便,是的。您可以将两个列表转换为字典:

mapping = dict(zip(somelist, someotherlist))
return mapping.get(value)

假设somelist中的项目既是唯一的又可以播放。

演示:

>>> somelist = ['foo', 'bar', 'baz']
>>> someotherlist = ['spam', 'ham', 'eggs']
>>> mapped_value(somelist, someotherlist, 'bar')
'ham'
>>> mapping = dict(zip(somelist, someotherlist))
>>> mapping.get('bar')
'ham'