根据部分字符串在列表中查找条目

时间:2016-05-05 04:20:56

标签: python list list-comprehension

我有这个清单:

item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70']

然后我把这个字符串传给了我:

widget = 'BBB'

我想根据item找到widget中的条目。

如果widget包含在任何列表条目中,我想在列表中找到该条目。我可以使用item[i]并保留它将持续的循环列表。

最终输出将是列表条目本身BBB:10。 (在提供的示例中。)

2 个答案:

答案 0 :(得分:4)

您可以尝试:

>>> item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70']
>>> widget = 'BBB'

>>> next(i for i in item if i.startswith(widget))
'BBB:10'

或者,如果它不一定必须以"BBB"开头,那么您可以将条件更改为

>>> next(i for i in item if widget in i)
'BBB:10'
>>> next(idx for idx,i in enumerate(item) if widget in i)
1

编辑:请同时阅读@PaulMcGuire's answer。在设计方面应该如何做。

答案 1 :(得分:3)

如果您要进行大量搜索,请重新审视您的设计。这应该是一个dict,其中小部件名称是键,60,10,65等值将是值。您可以使用

从当前列表中构造它
item_dict = dict((k,int(v)) for k,v in (i.rsplit(':') for i in item))

然后您可以使用以下方法轻松查找值:

item_dict['BBB'] # 10 (already converted to an int)

in运算符现在可以进行可预测的测试:

'BBB' in item_dict # True
'BB' in item_dict # False