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