python – 返回包含特定元素的元组最干净的方法?

python中,如果我有一个元组元组,就像这样:

((1, 'foo'), (2, 'bar'), (3, 'baz'))

什么是返回包含特定第一个元素的元组的第0个元素的最有效/干净/ pythonic方式.我假设它可以作为一个简单的单行程完成.

换句话说,如何使用’bar’返回2?

这是我正在寻找的笨重的等价物,如果不清楚的话:

for tup in ((1, 'foo'), (2, 'bar'), (3, 'baz')):
    if tup[1] == 'bar':
        tup[0]

解决方法:

如果您想要所有这些值,请使用列表推导:

>>> lis = ((1, 'foo'), (2, 'bar'), (3, 'baz'))
>>> [x[0] for x in lis if x[1]=='bar' ]
[2]

如果您只想要一个值:

>>> next((x[0] for x in lis if x[1]=='bar'), None)
2

如果您多次执行此操作,则将该元组列表转换为dict:

>>> d = {v:k for k,v in ((1, 'foo'), (2, 'bar'), (3, 'baz'))}
>>> d['bar']
2
>>> d['foo']
1
上一篇:如何通过标量数组乘以numpy元组数组


下一篇:Python:元组赋值,同时转换类型