首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据部分字符串在列表中查找条目

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

Stack Overflow用户
提问于 2016-05-05 04:20:55
回答 2查看 1.2K关注 0票数 1

我有一份清单:

代码语言:javascript
运行
复制
item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70']

然后我把这条线传递给我:

代码语言:javascript
运行
复制
widget = 'BBB'

我想在item中找到基于widget的条目。

如果widget包含在任何列表条目中,我希望在列表中找到条目。在这里,我可以使用item[i]并为循环保留列表。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-05 11:53:00

如果你要做很多这样的搜索,请重新审视你的设计。这实际上应该是一个小部件名是键,而60、10、65等值是值的地方。您可以使用以下方法从当前列表中构造

代码语言:javascript
运行
复制
item_dict = dict((k,int(v)) for k,v in (i.rsplit(':') for i in item))

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

代码语言:javascript
运行
复制
item_dict['BBB'] # 10 (already converted to an int)

in操作符现在对是否存在进行了可预测的测试:

代码语言:javascript
运行
复制
'BBB' in item_dict # True
'BB' in item_dict # False
票数 3
EN

Stack Overflow用户

发布于 2016-05-05 04:23:42

你可以试试:

代码语言:javascript
运行
复制
>>> 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"开始,那么您可以将条件更改为

代码语言:javascript
运行
复制
>>> 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。就设计而言,这就是应该做的事情。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37042291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档