我想搜索tuple of tuples
特定字符串并返回父元组的索引。我似乎经常遇到这种搜索的变体。
最Pythonic的方法是什么?
IE:
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
Run Code Online (Sandbox Code Playgroud)
我可以将其概括为一个小的实用函数,它接受一个可迭代的、一个索引(我0
在示例中进行了硬编码)和一个搜索值。它确实有效,但我有这样的想法:可能有一个单行句;)
IE:
def pluck(iterable, key, value):
for index, item in enumerate(iterable):
if item[key] == value:
return index
return None
Run Code Online (Sandbox Code Playgroud)
或者你可以这样做:
dict(derp)[<key_name>]
Run Code Online (Sandbox Code Playgroud)
例如。
dict(derp)['Cat']
Run Code Online (Sandbox Code Playgroud)
这会给你“宠物”
它确实有效,但我有这样的想法:可能有一个单行句;)
单行代码可能不是Python式的方法:)
你使用的方法看起来不错。
编辑:
如果你想变得可爱:
return next( (i for i,(k,v) in enumerate(items) if k=='Spock'),None)
Run Code Online (Sandbox Code Playgroud)
next
None
接受一个生成器表达式,并在生成器耗尽后返回下一个值或第二个参数(在本例中)。
归档时间: |
|
查看次数: |
19628 次 |
最近记录: |