Python 根据部分字符串在列表中查找条目
我有以下清单:Python 根据部分字符串在列表中查找条目,python,list,list-comprehension,Python,List,List Comprehension,我有以下清单: item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70'] 然后我将这个字符串传递给我: widget = 'BBB' 我想根据小部件在项中查找条目 如果widget包含在任何列表条目中,我想在列表中查找该条目。我可以使用item[I]并保留列表以供循环使用 最终输出将是列表条目本身,BBB:10。(在提供的示例中。)您可以尝试: >>> item = ['AAA:60', 'BBB:10', 'CCC
item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70']
然后我将这个字符串传递给我:
widget = 'BBB'
我想根据小部件
在项
中查找条目
如果widget
包含在任何列表条目中,我想在列表中查找该条目。我可以使用item[I]
并保留列表以供循环使用
最终输出将是列表条目本身,BBB:10
。(在提供的示例中。)您可以尝试:
>>> 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
编辑:请同时阅读。就设计而言,这是应该做的。您可以尝试:
>>> 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
编辑:请同时阅读。就设计而言,这就是它应该做的。如果您要进行大量的搜索,请重新访问您的设计。这实际上应该是一个dict,其中widget名称是键,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)
在
中,操作员现在对是否存在进行可预测的测试:
'BBB' in item_dict # True
'BB' in item_dict # False
如果您将要进行大量的搜索,请重新访问您的设计。这实际上应该是一个dict,其中widget名称是键,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)
在
中,操作员现在对是否存在进行可预测的测试:
'BBB' in item_dict # True
'BB' in item_dict # False
那么,我对项目[]的索引是什么?我试着用一个
IF
@chow来概括这一点-你可以简单地枚举列表并获取你的结果下一步(idx代表idx,I在enumerate(item)IF widget in I)
。如果你搜索“BB”呢?您将使用startswith
或测试中的错误点击“BBB:10”。如果i.startswith(widget+“:”)
,测试更安全。这假设“:”作为小部件标识符无效-考虑到项目列表中的“:”分隔符,这可能是一个安全的假设。那么我对项目[]的索引是什么?我试着用一个IF
@chow来概括这一点-你可以简单地枚举列表并获取你的结果下一步(idx代表idx,I在enumerate(item)IF widget in I)
。如果你搜索“BB”呢?您将使用startswith
或测试中的错误点击“BBB:10”。如果i.startswith(widget+“:”)
,测试更安全。这假设“:”作为小部件标识符无效-考虑到项目列表中的“:”分隔符,这可能是一个安全的假设。