在Python中搜索二维元组/列表

2024-06-06 04:54:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在tuple of tuples中搜索特定字符串并返回父元组的索引。我似乎经常遇到这种搜索的变体。

什么是最Python的方式来做这件事?

即:

derp = (('Cat','Pet'),('Dog','Pet'),('Spock','Vulcan'))
i = None
for index, item in enumerate(derp):
    if item[0] == 'Spock':
         i = index
         break
>>>print i
2

我可以将其归纳为一个小的实用函数,它包含一个iterable、一个索引(在示例中我已经硬编码了0)和一个搜索值。它确实起到了作用,但我有一个想法,那就是它可能只有一行代码;)

即:

def pluck(iterable, key, value):
    for index, item in enumerate(iterable):
        if item[key] == value:
             return index
    return None

Tags: keyinnoneforindexreturnifvalue
3条回答

或者你可以:

dict(derp)[<key_name>]

例如

dict(derp)['Cat']

它会给你“宠物”

It does the trick but I've got this notion that there's probably a one-liner for it ;)

其中一条线可能是而不是这是一种Python式的方式:)

你用的方法看起来不错。

编辑:

如果你想变得可爱:

return next( (i for i,(k,v) in enumerate(items) if k=='Spock'),None)

next接受生成器表达式,并在生成器用完后返回下一个值或第二个参数(在本例中为None)。

如果你经常搜索同一个元组,你可以构建一个dict

lookup_table = dict((key, i) for i, (key, unused) in enumerate(derp))

print lookup_table['Spock']
--> 2

相关问题 更多 >